如何在 Spring Boot 中添加过滤器类?
2022-08-31 05:25:09
Spring Boot中是否有针对类(用于Web应用程序)的任何注释?也许?Filter
@Filter
我想在我的项目中添加自定义筛选器。
春靴参考指南提到了,但我不确定如何使用它。FilterRegistrationBean
Spring Boot中是否有针对类(用于Web应用程序)的任何注释?也许?Filter
@Filter
我想在我的项目中添加自定义筛选器。
春靴参考指南提到了,但我不确定如何使用它。FilterRegistrationBean
如果要设置第三方过滤器,可以使用 。FilterRegistrationBean
例如,相当于 web.xml:
<filter>
<filter-name>SomeFilter</filter-name>
<filter-class>com.somecompany.SomeFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>SomeFilter</filter-name>
<url-pattern>/url/*</url-pattern>
<init-param>
<param-name>paramName</param-name>
<param-value>paramValue</param-value>
</init-param>
</filter-mapping>
这些将是文件中的两个 bean:@Configuration
@Bean
public FilterRegistrationBean someFilterRegistration() {
FilterRegistrationBean registration = new FilterRegistrationBean();
registration.setFilter(someFilter());
registration.addUrlPatterns("/url/*");
registration.addInitParameter("paramName", "paramValue");
registration.setName("someFilter");
registration.setOrder(1);
return registration;
}
public Filter someFilter() {
return new SomeFilter();
}
以上内容已使用 Spring Boot 1.2.3 进行了测试。
下面是在 Spring Boot MVC 应用程序中包含自定义筛选器的一种方法的示例。确保在组件扫描中包含包:
package com.dearheart.gtsc.filters;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;
import org.springframework.context.annotation.Profile;
import org.springframework.stereotype.Component;
@Component
public class XClacksOverhead implements Filter {
public static final String X_CLACKS_OVERHEAD = "X-Clacks-Overhead";
@Override
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) res;
response.setHeader(X_CLACKS_OVERHEAD, "GNU Terry Pratchett");
chain.doFilter(req, res);
}
@Override
public void destroy() {}
@Override
public void init(FilterConfig arg0) throws ServletException {}
}