1.首先我们需要创建一个注解:
@Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface AfterInvest { }
2.然后声明引入指定的方法(路径为你声明注解的路径)
@Pointcut("@annotation(com.*.AfterInvest)") public void afterInvestPointcut() { }
3,关联具体的方法,并且写你的具体内容(AspectJ支持5种类型的通知注解:
@Before:前置通知,在方法执行之前返回
@After:后置通知,在方法执行后执行
@AfterRunning:返回通知,在方法返回结果之后执行
@AfterThrowing:异常通知,在方法抛出异常之后
@Around:环绕通知,围绕着方法执行)
@AfterReturning(returning = "rvt", pointcut = "afterInvestPointcut()") public void afterInvest(JoinPoint joinPoint,Object rvt) {
Object[] args = joinPoint.getArgs();//拿到你需要执行切面的方法的参数列表
* rs = (*) rvt;//这种方法拿到执行切面的方法的返回值(*代表具体类型)
//你具体要做的操作
}
4.将注解加到你要执行切面的方法上面
@AfterInvest //你的注解所绑定需要执行的切面方法 @Override @Transactional public void paySuccess(Order order) {
//你具体的方法
}