2009-07-16 10 views
0

私は以前にSpringを使用しましたが、私は専門家ではなく、これまで標準的なWeb開発にしか使用していませんでした。Beanのライフタイムを管理するために複数のApplicationContextを作成してSpringを使用する - これは大丈夫ですか?

現在、私はSpringが非常に異なって使用されているプロジェクトに取り組んでいます。これは、多くのディスプレイを備えたスタンドアローンのスイングアプリで、ユーザーはツールバーからディスプレイを切り替えることができます。表示が変わると、すべてのコンポーネントを破壊する必要があります(ガベージコレクション)。

現在のところ、これは各ディスプレイに別々のApplicationContextを関連付けることによって行われます。したがって、ディスプレイが変更されたとき、ディスプレイに関連付けられたAppCtxが破棄され、新しいアプリケーションコンテキストが(別のXMLファイルから)作成され、コンポーネントが新しいディスプレイにロードされます。

これはSpringを使用する適切な方法ですか?私は春のコンテナの内部とコンテナが豆を管理する方法についてはあまり知らないので、それが良いかどうかを判断できません。

答えて

1

custom scopeを使用してください。

Spring 2.0以降、SpringのBeanスコープ機構は拡張可能です。つまり、Springが提供するBeanスコープだけに限定されるわけではありません。独自のスコープを定義したり、既存のスコープを再定義することもできます(ただし最後のスコープは悪い習慣とみなされますが、組み込みのシングルトンとプロトタイプのスコープはオーバーライドできません)。

すべての画面が変更されるたびに豆を解析/設定/定義/インスタンス化するので、アプローチの問題は主にパフォーマンスです。スコープごとに別々のオブジェクトを返すscreenのカスタムスコープ(代わりに)を使用することをお勧めします。

実装の詳細については、Scope javadocを参照してください。

+0

ありがとう、私はちょうどスコープについて読んだだけで、彼らは私が必要とするもののように聞こえる! –

関連する問題