2016-11-16 19 views
3

何以下これらの違い...AOP春のセキュリティ対

@org.aspectj.lang.annotation.Aspect 
public class Test { 
    //@Pointcut, @Around etc etc.. 
} 

そして

public aspect Test { 

} 

そして、何...

  • 春の間で、セキュリティのために使用することをお勧めしますセキュリティ&
  • AOP
  • 春アプリで

答えて

7

チェックhere

アスペクト宣言は org.aspectj.lang.annotation.Aspect注釈によってサポートされています。宣言:

public aspect Foo {} 

@Aspect 
public class Foo {} 

は、と等価である最初のものは、スプリングによって検出されます。後でAspectJが必要です。

2番目の質問です。比較は不可能です。最初のものはフレームワークであり、後のものはパラダイムです。 SpringセキュリティはAOPを使用してメソッド呼び出しを保護しますが、AOP自体はセキュリティメカニズムではありません。もちろん、AOPを使用して独自のセキュリティを構築する場合を除き、ホイールを再発明しています。あなたのクラスアスペクトを行います@Aspect注釈付きクラスTestマーキング

+0

つまり、自分自身のセキュリティパートをカスタマイズしたい場合は、Core AOPがより優れています。そして、秩序あるコードを取得するためには、Spring Security Frameworkはいいですね。 –

+2

春は完全なセキュリティスーツです...それはあらゆる種類のユースケースをサポートすることができるので、私はドキュメントをチェックアウトすることをお勧めします。 AOPよりもはるかに必要な機能的なセキュリティを作成するために、AOPはメソッド呼び出しを傍受するための方法ではありません。確保するにはもっと多くのものが必要です。 フィルタ、プロバイダ、コントローラを自分で作成できますが、それはなぜですか? Spring Securityは、金融システムを含むあらゆる種類のプロジェクトを保護するために使用されます。 –

+0

もちろん、私はSpring Security Docを読んでいます。 ところで、Strutsはどうですか?既存のstruts1プロジェクトでAOPを使用できますか? –

1

、あなたは別の保つあなたの余分なcross-cutting functinality(機能を定義することができ、今advicespointcutsjoinpointsを見つけるために読んで、あなたのクラスをスキャンしますSpringのApplicationContextまたはBeanFactory意味しますメソッド呼び出しの後、メソッドコールの後、メソッドの後に例外をスローするなどのイベントのために実行されるもの)を返します。

AOP (Aspect-oriented programming)は、クロスカッティング機能を提供するためにスプリングが続くデザインパターンですSpring Securityは完全なスプリングフレームの一部ですあなたのアプリケーションをセキュリティで保護するために使うことができます。

Spring Securityは内部的にAOPとフィルタを使用して作業を行います。

1

最初のものは注釈スタイルの構文で、Spring AOPと純粋なAspectJの両方で使用でき、2つ目はネイティブのAspectJ構文で、純粋なAspectJでのみ動作し、プロキシベースのSpring AOPでは動作しません。しかし、純粋なAspectJ(AspectJコンパイラでコンパイルされたもの)は、Springマニュアル、Using AspectJ with Spring applicationsの章で説明されているように、Springプロジェクトに組み込むこともできます。

セキュリティの実装に適しているアプローチは、ユースケースを詳しく説明していない限り、哲学的な質問ですが、一般的な提案は次のとおりです。セキュリティメカニズムを使用します。Spring AOPを使いたいのでSpringを使うことだけを考えているのであれば、単一の目的にのみ使用される大きなフレームワークから離れ、セキュリティを実装するためにPOJOアプリケーションで純粋なAspectJを使用することをお勧めします。