dVa*_*ion 21 spring annotations servlet-filters spring-boot
我想要ETag支持.为此目的,有一个ShallowEtagHeaderFilter完成所有工作.如何添加它而不在我的声明web.xml(实际上不存在,因为我到目前为止没有它的某种方式得到它)?
PS我使用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;
}
}
Run Code Online (Sandbox Code Playgroud)
Bri*_*zel 33
正如参考文档中所提到的,唯一需要的步骤是在配置类中将过滤器声明为Bean,就是这样!
@Configuration
public class WebConfig {
@Bean
public Filter shallowEtagHeaderFilter() {
return new ShallowEtagHeaderFilter();
}
}
Run Code Online (Sandbox Code Playgroud)
你可能已经扩展了一个WebApplicationInitializer.如果没有,那么您应该将webapp配置从web.xml文件转换为WebApplicationInitializer类.
如果您的上下文配置存在于XML文件中,则可以创建一个扩展的类AbstractDispatcherServletInitializer- 如果使用配置类,AbstractAnnotationConfigDispatcherServletInitializer则是正确的选择.
无论如何,您可以添加过滤器注册:
@Override
protected Filter[] getServletFilters() {
return new Filter[] {
new ShallowEtagHeaderFilter();
};
}
Run Code Online (Sandbox Code Playgroud)
Spring参考文档中提供了基于代码的Servlet容器初始化的完整示例.
| 归档时间: |
|
| 查看次数: |
61463 次 |
| 最近记录: |