SpringBoot过滤器、拦截器、切面之间的区别和执行顺序

您所在的位置:网站首页 springboot过滤器和拦截器 SpringBoot过滤器、拦截器、切面之间的区别和执行顺序

SpringBoot过滤器、拦截器、切面之间的区别和执行顺序

2023-11-06 03:26| 来源: 网络整理| 查看: 265

拦截器不依赖与servlet容器是SpringMVC自带的,过滤器依赖于Servlet容器。

拦截器是基于java的反射机制的,而过滤器是基于函数回调。

拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。

拦截器可以访问controller上下文、值栈里的对象,而过滤器不能访问。

拦截器的preHandle方法在进入controller前执行,而拦截器的postHandle方法在执行完controller业务流程后,在视图解析器解析ModelAndView之前执行,可以操控Controller的ModelAndView内容。而afterCompletion是在视图解析器解析渲染ModelAndView完成之后执行的

过滤器是在服务器启动时就会创建的,只会创建一个实例,常驻内存,也就是说服务器一启动就会执行Filter的init(FilterConfig config)方法.当Filter被移除或服务器正常关闭时,会执行destroy方法

拦截器可以获取IOC容器中的各个bean,而过滤器就不行,这点很重要,在拦截器里注入一个service,可以调用业务逻辑。

关于这句话的解读是:我们知道拦截器是SprinMVC自带的,而SpringMVC存在Controller层的,而controller层可以访问到service层,service层是不能访问service层的,而过滤器是客户端和服务端之间请求与响应的过滤

过滤器和拦截器触发时机、时间、地方不一样

过滤器是在请求进入容器后,但请求进入servlet之前进行预处理的。请求结束返回也是在servlet处理完后,返回给前端

过滤器包裹住servlet,servlet包裹住拦截器。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3