Spring Boot使用ServletFilter或Listener的方式

Posted LarryZeal

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Boot使用ServletFilter或Listener的方式相关的知识,希望对你有一定的参考价值。

根据官方文档说明,有两种方式可以在你的Spring Boot应用中使用Servlet、Filter或Listener。

其一:将Servlet、Filter或Listener注册成Spring Bean。

注意:

由于这三者与容器有关,它们不会被延迟初始化!所以,一般情况下不能注入其他Spring Bean -- 但不是说不能获取,你完全可以使用某些手段,在调用之前再注入!

Servlet、Filter可以使用ServletRegistrationBean、FilterRegistrationBean来设置初始化参数和映射路径。

默认,如果不指定某个filter的dispatcherType的话,会匹配FORWARD、INCLUDE和REQUEST。如果启用了async,那还会匹配ASYNC。

如果只想使用Bean,而不想在容器中安装它们的话,registration.setEnabled(false) 即可。

其二:使用类路径扫描,具体来说就是在@Configuration class 上使用@ServletComponentScan。 

注意:

需要配合@WebServlet、@WebFilter或@WebListener使用;

默认扫描当前配置文件所在包及子包。

 

 

ps:

如果是Spring MVC项目,且是Java config的,那可以在选择上面的第一种方式;

或者在WebApplicationInitializer实现类中设置Filter - 应该是有一个添加多个Filter的方法,但只能用于dispatcherServlet!

或者,还可以在WebApplicationInitializer实现类的onStartup()方法中获取ServletContext,并注册自己的Servlet、Filter或Listener。

 

还需要补充一点,这是Servlet 3.0+才支持的功能。

以上是关于Spring Boot使用ServletFilter或Listener的方式的主要内容,如果未能解决你的问题,请参考以下文章

spring boot 2.0之使用spring boot

spring boot8.spring boot的日志框架使用

(转)Spring Boot 2 :使用 Docker 部署 Spring Boot

Spring boot- Spring Boot特性2

Spring Boot(十七):使用 Spring Boot 上传文件

spring boot:Spring Boot中Redis的使用