2

Spring セキュリティを備えた Spring MVC を利用したアプリケーションがあるとします。私は持っている:

  1. テーブル User に対する CRUD 操作を提供する UserBean クラス
  2. UserController : Userの操作を http クライアントに公開するコントローラー
  3. UserLogin: ユーザーを認証する Spring セキュリティの認証プロバイダー。

次の場合、アプリケーションをどのように構成すればよいですか。

  1. 注釈 (<context:component-scan base-package="org.example"/>) による自動検出 Bean を使用して、単純な XML 構成が必要です
  2. UserLogin と UserController が動作するには UserBean が必要です
  3. 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 かどうか?

4

2 に答える 2

2

構成用に 2 つの xml ファイルがありますが、特に理由はありません。

これらのサンプル Spring セキュリティ プロジェクトは、さまざまな種類の構成の良い例を提供します。おそらく、自分に合ったものを見つけることができます。

https://github.com/spring-projects/spring-security/tree/master/samples

于 2013-11-05T05:41:44.920 に答える
0

私の質問に隠されたメッセージは、「2 つのコンテキストを持つことはばかげている」というものでした。

  1. 誰かがすでにそれに気づいていましたか?
  2. 単一のアプリケーション構成を持つ方法はありますか?

答え:

  1. はい。https://jira.springsource.org/browse/SPR-6903
  2. はい。https://github.com/michaldo/spring-single-context-demo

私の場合に適用されるベストプラクティスは、https ://stackoverflow.com/a/14032213/2365727 で説明されています。

于 2013-11-06T21:44:54.733 に答える