2009-02-27 7 views
5

私はSpring 2.5.6を使用しています。プロパティファイルからPropertyPlaceholderConfigurerを介してプロパティが割り当てられているBeanがあります。私はプロパティファイルが変更されたときにBeanのプロパティを更新できるかどうか疑問に思っています。たとえば、プロパティファイルの最終更新日をチェックする定期的なプロセスがあり、変更されている場合は、Beanをリロードします。プロパティファイルからスプリングBeanプロパティを自動的に更新する

私の要件を満たすものが既に存在するかどうかは疑問です。もしそうでなければ、この問題を解決する最良の方法は何でしょうか?

ありがとうございました。

答えて

3

また、SpringのPropertyOverrideConfigurerを使用する場合もあります。プロパティを再読み込みし、ポーリング/スケジュラーBeanで再適用することができました。

実際に構成されたBeanがこれらのプロパティをどのように使用するかによって異なります。たとえば、それらを間接的にキャッシュすることができます。

+0

これは最も単純なアプローチであり、私たちがやり遂げるものです。ありがとう –

+0

私は、その点でPropertyOverrideConfigurerとPropertyPlaceholderConfigurerの違いは分かりません。プロパティの指定方法には違いがありますが、実際のBeanが作成される前にBeanFactoryPostProcessorとして1回だけ適用されます。彼らはどのように再適用されますか? –

+0

@hstoerr:PropertyPlaceholderConfigurerを使用すると、設定はバネ(xml)の設定({..}式)の中に隠されます。 PropertyOverrideConfigurerを使用すると、構成はbeanName.property = valueの形式になります。これは、Exiting Beanに再適用することができます(例:PropertyOverrideConfigurer.processProperties – jor

0

これを行う1つの方法は、アプリケーションにGroovyコンソールを埋め込むことです。 Here'sいくつかの指示。彼らはとてもシンプルでしたが、私はグルーヴィーに精通していませんでしたが、私にはほとんど時間がかかりませんでした。

これを実行したら、コンソールに移動してライブアプリケーション内の値を即座に変更できます。

2

実行時に動的プロパティが必要な場合は、おそらく別の方法としてJMXがあります。

0

プロパティファイルの変更時にBeanを再作成するBeanにカスタムスコープを使用しようとする場合があります。私のmore extensive answer hereを参照してください。

0

Spring Cloud Configには、実行時にSpring Cloud Bus経由でCloud Configuration Serverを使用して設定プロパティを変更する機能があります。設定ファイルまたは.propertiesファイルまたは.ymlファイルは、Springアプリケーションから「外部化」され、起動時にアプリケーションが接続するSpring Cloud Config Serverから取得されます。そのクラウド設定サーバーはGITリポジトリから適切な構成.propertiesまたは.ymlファイルを取得します(他のストレージソリューションもありますが、GITが最も一般的です)。 GITリポジトリの設定ファイルの内容を変更することで、実行時の設定を変更することができます。 - Cloud Cloud Serverは、Spring Cloud Busを介してクライアントSpringアプリケーションに変更をブロードキャストし、それらのアプリケーションの設定は更新されます。アプリ。ここでは簡単な例を見つけることができます:https://github.com/ldojo/spring-cloud-config-examples