1. 程式人生 > >springAop之註解使用例項

springAop之註解使用例項

在這裡就以前置通知為例(其他通知的做法和前置都是一樣)

  • 切點程式
  •       package com.wf.aop;
    

import com.wf.jiekou.Empleey;

public class CommonEmplyee implements Empleey { private String name;

public String getName() {
	return name;
}

public void setName(String name) {
	this.name = name;
}
public void signIn(String a) {
	System.out.println(name +"is very beatufal");
}

}

: 切面程式 package com.wf.zhujie; import java.util.Date;

import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.aspectj.lang.annotation.Pointcut; @Aspect public class AspectJLogger { public static final String EDP=“execution(*com.wf.aop.CommonEmplyee.signIn(…))”; //spring中Before通知 @Before(EDP) public void logBefore(JoinPoint jp) { System.out.println(“獲取傳遞給目標方法的引數值”+jp.getArgs()[0]); System.out.println(“獲取目標方法的java反射物件”+jp.getSignature()); System.out.println(“獲取目標物件”+jp.getTarget()); System.out.println(“logBefore:現在時間是:”+new Date()); } }

: 切面程式 package com.wf.zhujie;

import java.util.Date; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.aspectj.lang.annotation.Pointcut; @Aspect public class AspectJLogger { public static final String EDP=“execution(* com.wf.aop.CommonEmplyee.signIn(…))”; @Pointcut(EDP) public void webLog() { } @Before(“webLog()”) //spring中Before通知 public void logBefore(JoinPoint jp) { System.out.println(“獲取傳遞給目標方法的引數值”+jp.getArgs()[0]); System.out.println(“獲取目標方法的java反射物件”+jp.getSignature()); System.out.println(“獲取目標物件”+jp.getTarget()); System.out.println(“logBefore:現在時間是:”+new Date()); } }

1:在切面程式例項一中用 @Before(EDP)直接引用表示式; 2:在切面程式例項二中用 @Pointcut(EDP)註解引用表示式,之後註解方法,@Before(“webLog()”) ;

個人認為2例項中的做法比1例項中的用法安全