4

Spring のEnvironment プロパティ抽象化からプロパティに動的にアクセスしようとしています。

プロパティ ファイルを次のように宣言します。

<context:property-placeholder
    location="classpath:server.common.properties,
    classpath:server.${my-environment}.properties" />

プロパティ ファイルserver.test.propertiesで、次のように定義します。

myKey=foo

次に、次のコードを指定します。

@Component
public class PropertyTest {
    @Value("${myKey}")
    private String propertyValue;

    @Autowired 
    private PropertyResolver propertyResolver;

    public function test() {
         String fromResolver = propertyResolver.getProperty("myKey");
    }
}

このコードを実行すると、最終的にpropertyValue='foo', but fromResolver=null;になります。

受信propertyValueは、プロパティ読み取られていることを示します (コードの他の部分からこれを知っています)。ただし、それらを動的に検索しようとすると失敗します。

なんで?を使用せずにプロパティ値を動的に検索するにはどうすればよい@Valueですか?

4

2 に答える 2

2

を追加するだけで<context:property-placeholder/>は、新しい PropertySource が環境に追加されません。ApplicationContextInitializer完全にリンクした記事を読むと、新しい PropertySources を追加するために を登録して、使用しようとしている方法で利用できるようにすることが提案されていることがわかります。

于 2013-05-23T03:53:58.297 に答える