簡體   English   中英

Spring Java配置環境變量

[英]spring java configuration environment variables

我正在使用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;
}

但是沒有成功。 我已經嘗試了環境類,但有任何改進。

你能幫助我嗎?

您可以使用@Value注釋或@ConfigProperties -Classes注入它們

試試這個:

@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. 在@Configuration類中添加此字段
  @Autowired private Environment env; 
  1. 使用該字段來解析環境變量名稱

env.resolvePlaceholders( “$ {} MY_ENV_VAR”)

但是我正在尋找一種解決方案,該解決方案允許我聲明要從哪個域檢索變量。 例如系統變量,環境變量或外部屬性。

你能幫助我嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM