1. 程式人生 > >Spring Boot使用Servlet、Filter或Listener的方式

Spring Boot使用Servlet、Filter或Listener的方式

false listener tex 使用 fig java one 註入 ont

根據官方文檔說明,有兩種方式可以在你的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使用Servlet、Filter或Listener的方式