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()); } } 二
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例項中的用法安全