package com.aops; //第一种方式 //参考:https://www.jianshu.com/p/ff8d0cd69a7e
import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Pointcut; import org.springframework.stereotype.Component;
@Aspect @Component public class Aop { @Pointcut("execution(public String com.xlm.Man.eat(String,int)) && args(a,b) ") public void k(String a,int b) { }
@Around("k(a,b)")
public Object kkk(ProceedingJoinPoint pj,String a,int b) { Object o = null; System.out.println("事务开始..."); System.out.println("我在eat方法前执行:"+a);
try { o = pj.proceed(); } catch (Throwable e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println(o); System.out.println("我在eat方法后执行:"+b); System.out.println("事务结束..."+pj.getSignature().getName()); return o; }
} |
package com.aops;
//第二种方法
//参考:https://www.cnblogs.com/softidea/p/6123307.html
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;
@Aspect
@Component
public class Aop01 {
@Pointcut("execution(public String com.xlm.Man.eat(..)) ")
public void k(String a,int b) {
}
@Around("execution(public String com.xlm.Man.eat(..))")
public Object kkk(ProceedingJoinPoint pj) {
Object[] args = pj.getArgs();
// for (Object a : args) {
// System.out.println(a);
//
// }
Object o = null;
System.out.println("事务开始...");
System.out.println("我在eat方法前执行:"+args[0]);
try {
o = pj.proceed();
} catch (Throwable e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(o);
System.out.println("我在eat方法后执行:"+args[1]);
System.out.println("事务结束..."+pj.getSignature().getName());
return o;
}
}