拦截机制有三种:
1. 过滤器(Filter)能拿到http请求,但是拿不到处理请求方法的信息。
2. 拦截器(Interceptor)既能拿到http请求信息,也能拿到处理请求方法的信息,但是拿不到方法的参数信息。
3. 切片(Aspect)能拿到方法的参数信息,但是拿不到http请求信息。
什么意思呢?
- 作用域不同
- 过滤器依赖于servlet容器,只能在 servlet容器,web环境下使用
- 拦截器依赖于spring容器,可以在spring容器中调用,不管此时Spring处于什么环境
- 细粒度的不同
- 过滤器的控制比较粗,只能在请求进来时进行处理,对请求和响应进行包装
- 拦截器提供更精细的控制,可以在controller对请求处理之前或之后被调用,也可以在渲染视图呈现给用户之后调用
何时使用拦截器?何时使用过滤器?
- 如果是非spring项目,那么拦截器不能用,只能使用过滤器。
- 如果是处理controller前后,既可以使用拦截器也可以使用过滤器。
- 如果是处理dispaterServlet前后,只能使用过滤器。
@Configuration标注在类上,相当于把该类作为spring的xml配置文件中的<beans>
,作用为:配置spring容器(应用上下文)
实际上Bean就是一个类+初始化参数而已,用特定的函数寻找,工厂模式而已。