0

Spring3.1(スタンドアロン環境)を使用しています

テンプレートを介してトピックに接続する MessageListener を実装して MDB を作成しました。

この Bean スコープはシングルトンです。

そのリスナー Bean を破棄したい場合があります。dispose と言うときは、ioc がそのリソースを解放し、この Bean をコンテナーから消去することを意味します (最終的に、この Bean はメッセージのリッスンを停止し、未使用のメモリを解放します)。

  1. getBean(..) メソッドを使用して id でこの Bean を取得して、破棄を実行する必要があります。getBean(..) を使用するとメモリ リークが発生する可能性があると聞きました。それ以外はどうすればいいですか?

  2. この目的のために、シングルトンスコープまたはプロトタイプを使用する必要がありますか?

4

1 に答える 1

0

getBean()とメモリリークの意味がわかりませんが...

単に停止するのではなく、完全に削除したい場合は、独自の「子」アプリケーションコンテキストで宣言できます。メインコンテキストを親にして、メインコンテキストのBeanを参照できるようにします(必要な場合)。

/**
 * Create a new ClassPathXmlApplicationContext with the given parent,
 * loading the definitions from the given XML files and automatically
 * refreshing the context.
 * @param configLocations array of resource locations
 * @param parent the parent context
 * @throws BeansException if context creation failed
 */
public ClassPathXmlApplicationContext(String[] configLocations, ApplicationContext parent) throws BeansException {
    this(configLocations, true, parent);
}

削除したいとき; context.destroy()を呼び出します。

于 2012-07-15T13:18:23.213 に答える