Javaee-spring aopプログラミング(Aspectjメソッド)

2976 ワード

aop:接面プログラミング向けで、オブジェクト向けの補完です.
クラスにトランザクション、ログ、権限、i常処理などをフェースで追加します.現在多く使われているaopプログラミング方法はAspectjであり,Java言語に基づくaopフレームワークである.
aopプログラミングは、強化方法が必要な方法で一度に強化することができます.
まず、クラスを強化する方法を実現する強化クラスがあり、ここでは周回通知を実現し、ここではテストクラスにすぎず、その後のプログラミングで出力の操作前と操作後を具体的な方法に変えることができる.
package lu.nynu.aspect;

import org.aspectj.lang.ProceedingJoinPoint;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class LogAspect {
	Logger logger = LoggerFactory.getLogger(LogAspect.class);
	
	public Object 	round(ProceedingJoinPoint point) throws Throwable{
		System.out.println("   ");
		Object object=point.proceed();//        
		System.out.println("   ");
		return object;		
	}

}

次に、ターゲット・クラス(強化されるクラスが必要)を定義します.ここでは、インタフェースを実装するか、実装しないことができます.
package lu.nynu.service;

public class StudentService implements BaseService{

	@Override
	public void add() {	
		System.out.println("  student  ");		
	}
	@Override
	public void update() {
		System.out.println("  student  ");		
	}
}

次にxmlファイルを構成します.



	
	
	
	

      
		 
		 
		 
			
			
		
	 


proxy-target-class属性、デフォルトはfalseで、cglibエージェント方法を採用して、目標クラスにインタフェースがあることができないことを要求して、TRUEに変更すればいいです
execution(* lu.nynu.service.*.*(..))切断面の定義:
最初の*はすべての戻り値を表します
次の2つ.*パケットパスの下にあるすべてのクラスを表すすべてのメソッド
 (..)すべてのパラメータを表す次はテスト方法です
package lu.nynu.test;

import lu.nynu.service.StudentService;
import lu.nynu.service.UserService;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;


public class Test1 {
	@Test
	public void f1(){
	ApplicationContext ac=new ClassPathXmlApplicationContext("beans.xml");//      
    StudentService studentService=  (StudentService) ac.getBean("studentService");
    studentService.add();
  
		
	}

}