2011-11-16 4 views
10

Beanが「プロトタイプ」としてスコープされている場合のSpringのドキュメントによると、スプリングはそのオブジェクトの完全なライフサイクルを管理しません。より具体的には、破棄ライフサイクルコールバックは呼び出されません。クライアントコードは、必要なクリーンアップを実行する必要があります。 Springのドキュメントでは、この目的のためにカスタムBeanポストプロセッサを使用することも示唆しています。しかし、 "BeanPostProcessor"インタフェースには、Beanの初期化前後のコールバックメソッドしか含まれていません。解読コールバックの方法はありません。プロトタイプスコープのBeanで取得したリソースをどこでどのように解放するのですか?Spring:プロトタイプスコープのBeanをきれいに終了するには?

答えて

4

あなたが探しているのは、DestructionAwareBeanPostProcessorです。これは、BeanPostProcessorのサブインターフェースです。

あなた自身でそのインターフェイスの新しい実装を作成するか、CommonAnnotationBeanProcessorのような実装クラスを使用することができます。

+1

@Raihanこれが正しいかどうかわかりません。この文書はSingletonsにのみ適用されるとしています。プロトタイプBeanがスコープ外に出る時期をSpringがどのように知るのだろうか?このインタフェースとその具体的なメソッドの詳細については、http://static.springsource.org/spring/docs/3.0.x/javadoc-api/を参照してください。 – shrini1000

1

プロトタイプスコープのBeanを終了させる唯一の方法は、明示的にリソースを破棄するいくつかの「破棄」メソッドを呼び出すことです。 Phantom Referencesも使用できます。 Hereはさまざまなタイプの参照に関する詳細です。

関連する問題