2016-10-08 2 views
6

ApplicationContextが完全にロードされたときに一度起動されることは知っていますが、それ以降は実行時にはどうなりますか? 「リフレッシュ」という言葉はリフレッシュ時にトリガされることを意味しますが、SpringがApplicationContextリフレッシュとして認定するものは何ですか?SpringでContextRefreshedEventが起動されるのはいつですか?

追加質問: このイベントは同時スレッドによってトリガされる可能性がありますか?このイベントスレッドのEventHandlerを安全にする必要がありますか?

答えて

3

性質、xmlまたは任意のスキーマファイルは/リフレッシュロードされたときにそれが発射され、http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/context/support/AbstractApplicationContext.html#refresh--

ロードまたはXMLファイル、プロパティファイルかもしれない設定の永続的な表現、 、またはリレーショナルデータベースを更新 スキーマ。これは、起動方法であるとしてそれは

を発生したとき

それは通常、スプリングによって暗黙的に解雇されていますが、それは特定の場合に発動することができるはずですが、ここではJavaのドキュメントでは、それが必要、と言いますそれが失敗した場合、すでにダメージを受けているリソースを避けるために、すでに作成済みの シングルトンを破棄します。つまり、そのメソッドの呼び出し後に を実行した場合、すべてのシングルトンがすべて であるかどうかをインスタンス化する必要があります。

+0

です。これは、2つの異なるスレッドが同時に起動することに役立ちますか? – kennyg

+0

それは確かではありませんが、可能であれば私はそれをしません。 1つのアプリケーションコンテキストがあり、問題のある2つの異なるスレッドからスレッドをリフレッシュすると、 – kuhajeyan

+0

これでスレッドセーフにする必要はありません...ありがとう! – kennyg

関連する問題