11

オブジェクトをサーブレットに注入する方法は?

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

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

PS私はSpringもGuiceも他のDIフレームワークも持っていません。手動の依存性注入に興味があります。

4

3 に答える 3

21

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

少し前に、基本的なテクニックを説明する例を作成しました。

于 2012-05-11T10:08:53.807 に答える
0

JNDI、Java Naming and Directory Interfaceを使用して、それ@Resourceを注入することができます。

于 2012-05-11T10:12:17.730 に答える
0

いくつかの IOC コンテナー (Spring、Guice) によって作成/管理されるサービスを使用できます。

ContextAware 実装を作成し、必要に応じてサーブレットから Bean を引き出すことができます

于 2012-05-11T10:06:13.240 に答える