2012-05-11 14 views
9

サーブレットにオブジェクトを挿入する方法は?dependency injectionをサーブレットで使用する方法は?

サーブレットがサーブレットコンテナによってインスタンス化されるため、コンストラクタDIを使用できません。
また、サーブレット用のセッターベースのDIを実装する素晴らしい方法もありません。

サーブレットリスナーを使用する必要がありますか?ベストプラクティスはありますか?

P.S.私はSpringもGuiceも他のDIフレームワークも持っていないので、私は手動の依存性注入に興味があります。

+2

この質問をご覧ください。多分それは助けになるでしょう:http://stackoverflow.com/q/1992132/891391 – yatul

答えて

0

あなたは、いくつかのIOCコンテナ(春、Guiceの)によって作成/管理されているサービスを利用することができます

あなたはContextAwareの実装を作成して、サーブレットから、必要なときと

16

これが可能であるとして豆を引き出し可能性サーブレット3.0の下にあります。 ServletContextListenerを登録すると、アプリケーションが起動する直前にサーブレットインスタンスをServletContextのaddServlet(String, Servlet)メソッドにプログラムで登録します。 Servletインスタンスを自分でインスタンス化するので、適切なコンストラクタを与えて依存関係を注入することができます。

私はan exampleを作成しましたが、これは基本的なテクニックを示しています。

+1

+1私は 'addServlet'について知らなかった – ewernli

+0

@ewernli:IMO、Sun/Oracleはそれにふさわしい宣伝をしませんでした。 –

+0

おかげで、とても役に立ちました – 7zark7

0

JNDI(Java Naming and Directory Interface)と@Resourceを使用して注入できます。

関連する問題