**有一句话说的好:【对于Spring Boot来说,约定 配置】; **
说明:
(1) 为什么写了这篇博客?:在【Spring Boot电商项目11:数据库设计与项目初始化六:使用【AOP】来实现【打印,请求与响应的,日志信息】的需求;(遇到了RequestContextHolder来获取请求与响应对象)】中遇到了,使用【AOP】来获取请求与响应的信息的内容;所以,这儿就总结下【J2EE中的过滤器】、【Spring中的AOP】、【Spring MVC中的拦截器】的区别;
1.首先,简要说下自己的理解:【J2EE中的过滤器】、【Spring 中的AOP】、【Spring MVC中的拦截器】的区别;
●【过滤器】是在J2EE的标准;这个组件的主要作用就是以url为抓手,来处理请求与响应;可以参考【(5)常用功能与过滤器、监听器、FreeMarker;】中的内容;
●【AOP】是在Spring中定义的;其主要作用是以目标类/目标方法为抓手,来给目标类增加功能;可以参考【(15)Spring基础:IoC;AOP;JDBC;】中的内容;
●【拦截器】是Spring MVC的标准组件;这个组件也是以url为抓手,来处理请求与响应的;【拦截器】和【过滤器】功能类似,但二者是两个不同的东西;同时【拦截器】底层最基本的实现,就是依赖于Spring AOP理念的;可以参考【(16)SpringMVC基础:入门,RESTful,拦截器】中的内容;
即,这儿的核心是:●【J2EE中的过滤器】和【Spring MVC中的拦截器】是直接通过url拦截web请求,以进行处理和控制;
●【Spring 中的AOP】的aspect切面,也能实现“拦截”,只是其是偏向于业务层面的拦截;也就是AOP是通过目标类/目标方法来实现拦截的;只是,因为通过【RequestContextHolder】可以获取当前的request对象;所以,如果我们的【AOP】处理的目标类/目标方法是Controller中处理请求与响应的方法的话,那么使用【AOP】技术也可以来处理请求与响应;这也是为什么上篇博客使用【AOP】技术来实现【打印请求与响应信息的日志】这个需求的原因;
2.参考文章;
关于【J2EE中的过滤器】、【Spring 中的AOP】、【Spring MVC中的拦截器】的区别可以参考一下文章:
●【 Spring 过滤器 拦截器 AOP区别】;
●【Spring:过滤器filter、拦截器interceptor、和AOP的区别与联系】;
●【AOP(面向切面编程)、Filter(过虑器)、Interceptor(拦截器)】;
……
有精力了,可以再进一步好好总结总结;