在Spring Boot应用程序中添加Servlet过滤器
我想让ETag支持。为此ShallowEtagHeaderFilter
,需要做所有工作。我如何在不声明的情况下添加它web.xml
(实际上不存在,因为到目前为止我已经不知何故了)?
PS我使用Spring Boot" title="Spring Boot">Spring Boot 1.1.4
PPS这是一个完整的解决方案
package cuenation.api;import org.springframework.boot.context.embedded.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.filter.ShallowEtagHeaderFilter;
import javax.servlet.DispatcherType;
import java.util.EnumSet;
@Configuration
public class WebConfig {
@Bean
public FilterRegistrationBean shallowEtagHeaderFilter() {
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(new ShallowEtagHeaderFilter());
registration.setDispatcherTypes(EnumSet.allOf(DispatcherType.class));
registration.addUrlPatterns("/cue-categories");
return registration;
}
}
回答:
When using Spring Boot
如参考文档中所述,唯一的步骤是在配置类中将该过滤器声明为Bean,就这样!
@Configurationpublic class WebConfig {
@Bean
public Filter shallowEtagHeaderFilter() {
return new ShallowEtagHeaderFilter();
}
}
When using Spring MVC
你可能已经扩展了WebApplicationInitializer
。如果没有,那么你应该将webapp
配置从web.xml
文件转换为WebApplicationInitializer
类。
如果上下文配置位于XML文件中,则可以创建扩展的类AbstractDispatcherServletInitializer
-如果使用配置类,AbstractAnnotationConfigDispatcherServletInitializer
则是正确的选择。
无论如何,你都可以添加过滤器注册:
@Override protected Filter[] getServletFilters() {
return new Filter[] {
new ShallowEtagHeaderFilter();
};
}
以上是 在Spring Boot应用程序中添加Servlet过滤器 的全部内容, 来源链接: utcz.com/qa/405895.html