Filter start
Interceptor preHandle
RequestBodyAdvice supports
RequestBodyAdvice beforeBodyRead
RequestBodyAdvice supports
RequestBodyAdvice afterBodyRead
controller 方法上的自定义切面 执行
controller 方法执行
ResponseBodyAdvice supports
ResponseBodyAdvice beforeBodyWrite
Interceptor postHandle
Interceptor afterCompletion
Filter end
理解如下:
Filter和Interceptor 是平时所熟悉的,先进后出的规则。
Interceptor 执行完成后执行RequestBodyAdvice,
RequestBodyAdvice里面可以把前端传入的inputMessage数据进行增删改查,可以构造所需body数据,并转换成@RequestBody注解的javabean。也就是在这里,spring把前端传入的json等格式数据转换成javabean
controller 方法上的自定义切面,使用@Aspect、@Component、@Pointcut、@Around配合做的AOP,在controller 方法前执行,
在AOP里面,可以调用return ProceedingJoinPoint.proceed();执行接下来的controller 方法,但所在的方法必须返回proceed()方法执行的结果,否则前端接收不到返回值。注:此处暂未想到业务场景
controller 方法执行,也就是业务代码了,不赘述了。
ResponseBodyAdvice 可以操作controller方法返回的值,例如可以封装成统一的Result格式、对数据进行加密。
备注:RequestBodyAdvice 和ResponseBodyAdvice 的supports方法里面是判断代码是否进入beforeBodyRead、afterBodyRead、beforeBodyWrite的前提,一般是判断方法、参数上是否有指定的注解
此处根据方法执行的日志,加深对http的了解程度。