SpringBoot消失的Web.xml
Filter 过滤器作为web.xml中重要的一部分,有着相当高的出场率,SpringBoot会默认注册几个Filter ApplicationContextHeaderFilter CharacterEncodingFilter 如果添加了Security依赖的话会加入SpringSecurityFilterChain 如果加入Actuator依赖的话就会加入WebRequestTraceFilter 实现自己的Filter JavaConfig注册Bean 我们如果自己要实现自己的Filter的话,需要实现Filter并实现其中的方法 同时要利用JavaConfig的方法来配置,一般情况下需要编写@Bean注解的返回值为FilterRegistrationBean的方法来实现JavaBean的注册 具体实现如下 需要注意的是此方法需要在被@Configuration注解的配置类中 @WebFilter+@ServletComponentScan 如果觉得Java代码的方式比较繁琐的话可以采用注解方式注册Filter,具体实现方式是在Filter实现类加入@WebFilter注解 例如 然后在SpringBootApplication类上添加@ServletComponentScan Filter的注册原理 我们采用JavaConfig的形式实现了Filter的注册,通过向上追溯得知FilterRegistrationBean的层级结构如下 ServletContextInitializer RegistrationBean AbstractFilterRegistrationBean FilterRegistrationBean 经查阅SpringBoot文档发现针对ServletContextInitializer的描述如下 Interface used to configure a Servlet 3.0+ context programmatically. Unlike WebApplicationInitializer, classes that implement this interface (and do not implement WebApplicationInitializer) will not be detected by SpringServletContainerInitializer and hence will not be automatically bootstrapped by the Servlet container. This interface is primarily designed to allow ServletContextInitializers to be managed by Spring and not the Servlet container. ...