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;
}
}