

Springを使ったアプリケーションで、設定ファイル（applicationContext.xml)で定義したplaceholderの設定を活かして、  
Environmentでプロパティ値を取得する方法はありますでしょうか。

前提として、設定ファイルでは以下のように複数のプロパティファイルをplaceholderに登録しています。

[code]

    <context:property-placeholder
        location="classpath*:/META-INF/spring/*.properties" />
    
[/code]

そして、Environmentを使って、以下のようにプロパティ値を取得したいと考えています。

[code]

    @Component
    public class Hoge {
    　　@Autowired
       private Environment env;
    
       public String getMessage（String key, String... param） {
    　　　　String prop = env.getProperty(key);
              :
       }
    }
    
[/code]

しかし、このままではうまくプロパティ値を取得できず、上記のコードでいうと、propにはnullが入ってしまいます。

@Componentではなく＠PropertySourceを利用すれば、正しくプロパティ値をとれることは確認できていますが、  
正規表現を使ってプロパティファイルを指定する必要があり、＠PropertySourceの利用は難しいと考えています。  
また、＠Valueを使う方法でも正しくプロパティ値をとれることは確認できていますが、コード内でキーを指定して動的にプロパティ値を取得する必要があるため、こちらの方法も現実的ではないかと考えています。

上記のような制約から、設定ファイルで定義したplaceholderの設定を活かして、  
Environmentでプロパティ値を取得したいと考えているのですが、その方法をご教授いただけないでしょうか。

Springは5.1.4を利用しています。よろしくお願いいたします。


CC BY-SA 4.0
2020-05-14T01:26:43.817
66583
2020-05-14T01:26:43.817
40136
question
spring
Springのplaceholderで定義したプロパティファイルの内容をEnvironmentで活用する方法はありますでしょうか