spring java配置环境变量

时间:2015-12-16 22:56:30

标签: java spring variables configuration environment

我正在使用Spring,并且我正在从xml配置切换到java配置。 实际上我遇到了环境变量的问题,因为我不了解我可以检索环境变量的值。

使用xml配置我有以下

<bean id="myAppProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
        <property name="location" value="file:${MY_ENV_VAR}/applicationConfiguration/external.properties"/>
        <property name="fileEncoding" value="UTF-8"/>
    </bean>

我不明白我可以将以前的xml代码切换到相同的java配置。我已尝试过这个

@Bean
public PropertiesFactoryBean cvlExternalProperties() {
    PropertiesFactoryBean res = new PropertiesFactoryBean();
    res.setFileEncoding("UTF-8");
    res.setLocation(new FileSystemResource("file:${MY_ENV_VAR}/applicationConfiguration/external.properties"));
    return res;
}

但没有成功。 我尝试过环境课,但有任何进步。

你能帮助我吗?

2 个答案:

答案 0 :(得分:0)

您使用@Value注释或@ConfigProperties - 类

注入它们

试试这个:

@Bean
public PropertiesFactoryBean cvlExternalProperties(@Value("${MY_ENV_VAR}") String envVar) {
    PropertiesFactoryBean res = new PropertiesFactoryBean();
    res.setFileEncoding("UTF-8");
    res.setLocation(new FileSystemResource("file:" + envVar +  "/applicationConfiguration/external.propert   ies"));
    return res;
}

您在此处找到更多内容:http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-external-config

答案 1 :(得分:0)

我找到了一个解决方案,但我正在尝试一个最好的解决方案。

工作解决方案

  1. 在@Configuration类中添加此字段
  2.  @Autowired
     private Environment env;
    
    1. 使用该字段解析环境变量名称
    2.   

      env.resolvePlaceholders( “$ {MY_ENV_VAR}”)

      但我正在寻找一种解决方案,允许我声明我想从哪个域中检索变量。例如系统变量,环境变量或外部属性。

      你能帮助我吗?