springの中でaopの配置

3442 ワード

Annotation方式
まず、springのプロファイルaplication Contaction Contect.xmlにxmlの名前空間とschemaLocationを導入する必要があります。以下の通りです。
xmlns:aop="http://www.springframework.org/schema/aop"
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
注意点として、springでaop側の内容を使うなら、それに応じたjarパッケージを導入する必要があります。
その後、xmlファイルに次のコードを入れる必要があります。
このようにspringは自動的に代理を生成し、対応する注釈を解読することができる。
ログログクラスを作成:
LogInterceptor.java
package com.bd.aop;

import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;

@Aspect
@Component
public class LogInterceptor {
	@Before(value="execution(public void com.bd.dao.impl.UserDaoImpl.add(..))")
	public void before(){
		System.out.println("method start!!!");
	}
}
このようにプログラムがadd()メソッドを実行すると、まずこの論理を実行します。プログラムの実行結果は以下の通りです。

この類はうどん類という意味です。
           @Component:うどん類としてspring管理が必要ですので、初期化時にはこのクラスを初期化してspring管理に渡す必要があります。
           @Before:切り込みポイントロジック
           Execution:切り込みポイント文法
ここでまた別の書き方ができます。
LogInterceptor.java
package com.bd.aop;

import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;

@Aspect
@Component
public class LogInterceptor {
	@Pointcut(value="execution(public * com.bd.dao..*.*(..))")
	public void myMethod(){
		
	}
	@Before(value="myMethod()")
	public void before(){
		System.out.println("before start!");
	}
	
	@After(value="myMethod()")
	public void after(){
		System.out.println("after start!");
	}
}
実行結果は:

説明:@Pointcutは、ここで複数の接点が定義されているような、切り込み点の集合を表しています。では、方法を実行しています。  の時に複数の論理を実行できます。
XML設定
まず、XMLの配置についてよく知る必要があります。このような配置方法を把握したほうがいいです。
第一歩は上と同じで、xmlの名前空間とschemaLocationを導入します。
関連配置は以下の通りです。
			
	
				
		
		
		
実際にはannotation構成ロジックと同じように、まず一つの断面類を定義し、その後、切り込み点の集合を定義し、必要な方法を再構成する。
また、このように構成してもよい。
			
	
		
		
		
両者の表現の効果も同じです。これも切り口の集合を説明しています。定義が終わったら、直接引用すればいいです。
また、上記の配置について注意すべき点の一つは、うどん類を定義する際に、IOCの注釈を使用したことである。Component(value=「logInterceptor」)は、この接麺類を配置する時に、直接引用することができます。