在使用springboot中使用AOP时需要在自己需要在方法上添加@Component 和 @Aspect 两个注解
//匹配cn.com.epicc.ecommerce.wcar.controllers包及其子包下的所有类的所有方法
@Pointcut("execution(* cn.com.controllers..*.*(..))")
public void executeService(){
}
上边的方法是声明拦截某个包内的方法,
@Around("executeService()")此注解是环绕的注解,此注解方法中可以使用ProceedingJoinPoint的proceed()方法放行,如果return则停止继续执行方法。
可使用ProceedingJoinPoint的 getArgs()方法得到请求json报文。
@AfterReturning(value = "execution(* cn.com.controllers..*.*(..))",returning = "keys")
public void doAfterReturningAdvice1(JoinPoint joinPoint,Object keys)
这个方法可以在请求结束后处理报文使用,入参中的keys是方法返回值,此注解的执行顺序在@After之后。
也可使用filter拦截器方法实现,但是拦截器的入参是属于form提交,可提取request中的信息,如果是接口访问需要考虑如何获取json格式的报文。