3

Spring によって管理されていない Bean から Spring ApplicationContext にアクセスするために使用できる ApplicationContextProvider クラスがあります。ここで述べたようなもの

ただし、Spring Managed Bean の場合は、ApplicationContextAware にすることができるので、ApplicationContext にアクセスできます。

私の質問は、共通の ApplicationContextProvider を使用して、Spring 管理の Bean からも Spring アプリケーション コンテキストを取得するのは良い考えですか、それとも ApplicationContextAware を引き続き使用する必要がありますか?

4

1 に答える 1

2

アプリケーションコンテキストへの静的参照でシングルトンを使用すると、問題が発生します。いずれにせよ、そのようなユーティリティクラスを使用することはほとんど決して良い考えではありません。WebApplicationContextUtils代わりに、レガシーWebアプリケーションを使用する場合。

私はかつて、EJB 2.1からSpringへの移行中にプロジェクトでこのソリューションを再発明しましたが、移行後はそれを取り除き、再びスリープ状態になる可能性があります。

質問に戻りましょう。SpringマネージドBeanにこのようなユーティリティを使用しても、まったく意味がありません。正直なところ、ApplicationContextAwareインターフェースも必要になることはめったにありません。Springは依存性を注入することを想定しているので、Springに常に依存性を要求するべきではありません。

引用符で囲まれたユーティリティクラス(マネージドBeanとアンマネージドBeanの両方)が必要な場合のユースケースを教えてください。Springが提供するサポートを受け入れることを拒否しているようです。

于 2012-06-04T16:10:07.023 に答える