Tomcat で実行されているサーブレット ベースのアプリで PicoContainer を使用しようとしています。構成は明らかにデバッグで機能しますが、サーブレットクラスがコンストラクターによって注入されず、セッターによってネイヤーターであると思わない限り。サーブレット クラスはインジェクトされるべきではありませんか? そうでない場合、サーブレット ベースのアプリでコンテナーを使用するにはどうすればよいですか?
1 に答える
1
実際にサーブレットを注入する IoC コンテナーはありません。あなたの場合、それらはTomcatによってインスタンス化されます。典型的な Pico コンポーネントは、コントローラー、DAO、ビジネス ロジックなどです。
実際に Web アプリを実装するには、次の 2 つの方法があります。
1) pico フィルターを使用します。コントローラーは、ライフサイクル インターフェイスを実装するリクエスト スコープ コンポーネントである必要があります。したがって、そのようなコンポーネントにはリクエストが注入され、コンテナによって start() が呼び出されます。実際、このアプローチでは、サーブレットはまったくありません。おそらく、特定の URL 処理を他のコンテナー コンポーネントに委譲する単一の Router コントローラーをリクエスト スコープに配置することは理にかなっています。
2) あなたが言ったように、ScopedContainers は外部コードのコンテナーを非表示にするため、独自の PicoServletContainerListener を作成する必要があります (既存のソースを取得し、スコープ付きコンテナーをコードで使用できるようにするだけです)。
于 2014-09-04T09:18:40.160 に答える