工作中源代码学习

SpringAOP执行顺序、AOP思想用于响应加密

2018-06-19  本文已影响23人  ___TheOne___

参考文章

太易保项目使用,SpringAOP的@Around注解,获取到controller处理后的响应报文同时保存日志到数据库。

通过以下代码,在切面类中获得请求的Reqest信息。

HttpServletRequest request =
 ((ServleRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest;

1>获取目标方法的响应结果:
当定义一个Around增强处理方法时,该方法的第一个形参必须是 ProceedingJoinPoint 类型,在增强处理方法体内,调用ProceedingJoinPoint的proceed方法才会执行目标方法------这就是@Around增强处理可以完全控制目标方法执行时机、如何执行的关键;如果程序没有调用ProceedingJoinPoint的proceed方法,则目标方法不会执行。

2>替换传入目标方法的实参:
调用ProceedingJoinPoint的proceed方法时,还可以传入一个Object[ ]对象,该数组中的值将被传入目标方法作为实参。如果传入的Object[ ]数组长度与目标方法所需要的参数个数不相等或者参数的类型不匹配,程序就会出现异常

SpringAOP执行顺序:
1.Spring AOP @Before @Around @After 等 advice 的执行顺序

AOP利用响应报文加密
2.使用自定义HttpMessageConverter对返回内容进行加密

3.@ControllerAdvice,ResponseBodyAdvice 统一处理返回值/响应体

上一篇 下一篇

猜你喜欢

热点阅读