我正在使用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;
}
但没有成功。 我尝试过环境课,但有任何进步。
你能帮助我吗?
答案 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)
我找到了一个解决方案,但我正在尝试一个最好的解决方案。
工作解决方案
@Autowired private Environment env;
env.resolvePlaceholders( “$ {MY_ENV_VAR}”)
但我正在寻找一种解决方案,允许我声明我想从哪个域中检索变量。例如系统变量,环境变量或外部属性。
你能帮助我吗?