7

プロパティ ファイル内からネストされたプレースホルダーを読み込むことはできますか? URL を動的に読み込もうとしています。

たとえば、私のプロパティファイルに含まれている場合

my.url=http://localhost:8888/service/{nestedProperty}/

実行時に {nestedProperty} の値をロードする方法はありますか? ResourceBundle の動作に似ています。もしそうなら、どうすれば文字列を効果的にインスタンス化できるでしょうか? ここまで考えてる

<bean id="myURLString" class="java.lang.String" scope="prototype" lazy-init="true">
    <property name="URL" value="${my.url}" />
</bean>

...しかし、ネストするプロパティがわかりません。現在、次のようなものがありますが、可能であれば注釈を使用して Bean を取得したいと思います

ctx.getBean("myURLString", String.class, new Object[] { nestedProperty} );

ここでPropertyPlaceholderConfigurerと他のいくつかのプロパティファイルの質問を調べましたが、これが可能かどうかはわかりません。

このネストされたプロパティをコード内から動的にロードするか、少なくともそこからそれらを操作したいことにも注意する必要があります (おそらく @PostConstruct を介して?)

4

1 に答える 1

9

はい、可能です:

my.url=http://localhost:8888/service/${nestedProperty}
nestedProperty=foo/bar/baz

例の中括弧の前にドル記号を追加すると、準備完了です!

完全に解決されたプロパティを実際に使用するには、次のようにします。

@Value("${my.url}")
private String url;

春の豆で。

于 2013-01-04T16:12:43.660 に答える