在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,就这样!

@Configuration

public 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

回到顶部