4

私のSpringアプリケーションapplication.propertiesでは、アプリケーションの外部からファイルをロードします/user/home/properties/application.properties. ファイル内の値は、Bean の @Value アノテーションを介して注入されます。私が持っている新しい要件は、application.propertiesファイル内の値を変更し、Bean 内の新しい値をリロード (または再注入) できることです。

Spring 3.2でこのようなことは可能ですか?

4

2 に答える 2

0

メイン クラスのスタンドアロン Spring アプリケーションでは、次のようなことができます。

 //load the appcontext with refresh value as false
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
                    new String[] { "classpath:appcontext.xml" }, false);
//add the props file
context.getEnvironment().getPropertySources().addFirst(new ResourcePropertySource("classpath:app.properties"));
//refresh the context
context.refresh();

これが行うことは、appcontext.xml ファイル内で呼び出されるすべてのプロパティで定義されたプロパティを使用してスプリング コンテキストをロードすることですが、ロード時に更新されません。次に、最初にapp.propertiesをロードするように指示します。その時点で、app.properties の値のみが考慮されます。そして、コンテキストが更新されます。app.properties ファイルのプロパティ値が読み込まれます。これにより、アプリケーションを再構築する必要はありません。値を変更してアプリケーションを再起動するだけです。

于 2013-03-07T15:20:14.897 に答える