SpringBoot中,嵌入環境中的Tomcat忽略ServletContainerInitializer

按照@philwebb說法,嵌入式環境下,SpringBoot有意忽略javax.servlet.ServletContainerInitializer,緣由:java

The search algorithm used by the containers was problematic. It also causes problems when you want to develop an executable WAR as you often want a javax.servlet.ServletContainerInitializer for the WAR that is not executed when you run java -jar.git

解決方案:github

1. 註冊org.springframework.boot.context.embedded.ServletContextInitializer類型的Bean代替ServletContainerInitializer。web

2. 直接向容器註冊Servlet和Filter。spring

3. 向容器註冊ServletRegistrationBean和FilterRegistrationBean。spring-boot

 

參考:servlet

[1]https://github.com/spring-projects/spring-boot/issues/321it

[2]https://github.com/spring-projects/spring-boot/issues/522io

相關文章
相關標籤/搜索