Spring的拦截器与Servlet的Filter 有相似之处,比如二者都是AOP编程思想的体现,都能实现权限检查、日志记录等。不同的是:
1、使用范围不同: Filter 是Servlet规范规定的,只能用于Web程序中。而拦截器既可以用于Web程序,也可以用于Application、Swing 程序中。
2、规范不同: Filter是在Servlet 规范中定义的,是Servlet容器支持的。而拦截器是在Spring容器内的,是Spring框架支持的。
3、使用的资源不同: 同其他的代码块一样, 拦截器也是一一个Spring 的组件,归Spring管理,配置在Spring文件中,
因此能使用Spring里的任何资源、对象,例如Service对象、数据源、事务管理等,通过loC注入到拦截器即可:而Filter则不能。
4、深度不同: Filter 在只在Servlet前后起作用。而拦截器能够深入到方法前后、异常抛出前后等,因此拦截器的使用具有更大的弹性。
所以在Spring构架的程序中,要优先使用拦截器。
监听器用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上述事件后,监听器某个方法将立即被执行。
用处:定时任务
Spring框架(配置文件随服务器启动加载) ContextLoaderListener
本文探讨了Spring拦截器与Servlet Filter的相似性和差异性。两者都是AOP编程思想的应用,常用于权限检查和日志记录。然而,Filter属于Servlet规范,局限于Web程序,而拦截器更通用,可应用于Web、Application甚至Swing程序。在资源利用上,拦截器能直接访问Spring容器内的资源,如Service、数据源等,而Filter不具备此能力。此外,拦截器的触达范围更深,能介入方法的前后及异常处理。因此,在Spring框架中,拦截器通常被视为首选。监听器则主要用于监听对象方法调用和属性变化,常用于定时任务,如Spring的ContextLoaderListener在服务器启动时加载配置文件。
2万+

被折叠的 条评论
为什么被折叠?



