Spring セキュリティを備えた Spring MVC を利用したアプリケーションがあるとします。私は持っている:
- テーブル User に対する CRUD 操作を提供する UserBean クラス
- UserController : Userの操作を http クライアントに公開するコントローラー
- UserLogin: ユーザーを認証する Spring セキュリティの認証プロバイダー。
次の場合、アプリケーションをどのように構成すればよいですか。
- 注釈 (<context:component-scan base-package="org.example"/>) による自動検出 Bean を使用して、単純な XML 構成が必要です
- UserLogin と UserController が動作するには UserBean が必要です
- UserLogin と UserController は、トランザクション アノテーションとアスペクト アノテーションを使用します。
次の機会が見えます。
DispatcherServlet と ContextLoaderListener の両方で使用される、共通の Spring XML 構成ファイルを 1 つ作成します。
- 欠点: 誰もチュートリアルでその解決策を示していません。すべての Bean が複製されます (ContextLoaderListener コンテキストで 1 つのインスタンス、DispatcherServlet で 2 つ目のインスタンス)。重複により、追跡が困難なバグが発生する可能性があります。複製はエレガントではない
2 つの Spring XML 構成ファイルを作成します。1 つは ContextLoaderListener (メイン) 用、もう 1 つは DispatcherServlet (コントローラー) 用です。UserBean は最初の構成で宣言され、2 番目の構成で表示されます
- 欠点: 重複を避けるために、複雑なコンポーネント スキャン ルールを両方のファイルに追加する必要があります (context:component-scan)。<tx:annotation-driven および <aop:aspectj-autoproxy/> は、両方のファイルで定義する必要があります。新しいものを宣言するときに、どの構成ファイルが適切であるかについてはまだ疑問があります。
2 つの Spring XML 構成ファイルを作成し、<tx:annotation-driven などの一般的な設定用に 3 つ目を含めます
- 短所:簡単な解決策が欲しかった...
概要: Spring MVC + Spring Security を使用してアプリケーションを構成するための優れたプラクティスを探しています。また、セキュリティ部分はビジネス部分と密接に関連しています。私は良い例を探していましたが、セキュリティ コードがビジネス コードから分離されているケースを常に見つけます。ただし、セキュリティとビジネスがコードを共有する場合の例が必要です
同様の質問: ContextLoaderListener かどうか?