SpringMVC的AOP总结

SpringMVC的AOP总结

1、Filter 过滤器

  • Filter是Servlet规范中规定的,只能用于WEB中, 在Servlet前后起作用

  • 它可以对几乎所有请求进行过滤,但是缺点是一个过滤器实例只能在容器初始化时调用一次

  • 使用场景: 修改字符编码; 对入参进行校验, 校验不通过返回错误信息.

  • 原理: 基于函数回调( filterchain)的方式调用

2、Interceptor 拦截器

  • 拦截器是Spring容器内的,是Spring框架支持的,可以使用Spring内的任何资源、对象

  • 可以深入到方法的调用前后、异常抛出前后等深层次的程度做处理

  • 缺点是只能对 Controller 请求进行拦截,对其他的一些比如直接访问静态资源的请求则没办法进行拦截处理

  • 原理: 基于Java的反射机制,属于面向切面编程(AOP)的一种运用

  • 使用场景: 对入参进行校验

3、RequestBodyAdvice

  • 配合 @ControllerAdvice 和 @RequestBody 注解使用, 可以拦截所有的请求. 如果不使用 @RequestBody 修饰入参对象, 不会拦截

  • 原理: AOP

  • 使用场景: 参数的过滤,字符的编码,第三方的解密

4、ResponseBodyAdvice

  • 拦截Controller方法默认返回参数,统一处理返回值/响应体

  • 使用场景: 对控制层的返回结果进行加密

  • 原理: AOP

5、AOP使用

  • 面向切面编程,在程序开发中主要用来解决一些系统层面上的问题,比如日志,事务,权限等

  • 使用场景: 统一记录控制层请求日志以及返回结果

用法总结

  • 如果是拦截静态资源,需要使用过滤器;

  • 如果是参数校验,可以使用拦截器实现;

  • 如果对参数加解密,可以使用RequestBodyAdivce 和ResponseBodyAdvice;

  • 如果是记录访问日志,可以使用 AOP.

拦截顺序是:filter—>Interceptor–>ControllerAdvice–>@Aspect -->Controller;

程序执行的顺序是先进过滤器,再进拦截器,最后进切面。注意:如果拦截器中preHandle方法返回的为false时,则无法进入切面.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值