@PropertySource使用spel(systemEnvironment和systemProperties)

时间:2014-11-10 16:52:04

标签: spring spring-3 spring-java-config spring-4

我在src/main/resources中有以下文件

bpp-dev.properties
bpp-prod.properties
bpp-test.properties

通过我的STS我可以在两个地方定义关键 envB

  1. VM argument-DenvB=dev
  2. 的方式
  3. Environment变量 envB prod
  4. 如果在Configuration课程中我有以下内容。

    @Configuration
    @PropertySource("classpath:/com/manuel/jordan/properties/bpp-${envB}.properties")
    public class PropertiesConfiguration {
    

    它工作正常但始终优先于System Properties而不是Environment Variables,这是默认行为。我在这里没问题。

    但如果我想明确地使用Environment Variables工作,则以下操作失败

    @Configuration
    @PropertySource("classpath:/com/manuel/jordan/properties/bpp-#{systemEnvironment['envB']}.properties")
    public class PropertiesConfiguration {
    

    我总是收到:

    Caused by: java.io.FileNotFoundException: 
    class path resource 
    [com/manuel/jordan/properties/bpp-#{systemEnvironment['envB']}.properties]
    cannot be opened because it does not exist
    

    我如何解决这个问题?

    如果我使用功能@PropertySource并且只是在同一个@Configuration课程中播放,我会使用以下内容:

    @Value("#{systemProperties['envB']}")
    private String propertiesEnvB;
    @Value("#{systemEnvironment['envB']}")
    private String environmentEnvB;
    

    稍后打印,两者都可以。

0 个答案:

没有答案