功能描述
在项目中加入自定义的filter过滤器处理数据
问题描述
1、只添加@WebFilter,此时过滤器不生效
@WebFilter(filterName = "paramRSAFilter", urlPatterns = "/api/*")
public class ParamRSAFilter implements Filter {}
注:filterName = “类名 首字母小写”
2、同时添加@Component和@WebFilter,此时过滤器生效但urlPatterns 配置路径无效(会过滤到根路径)
@Component
@WebFilter(filterName = "paramRSAFilter", urlPatterns = "/api/*")
public class ParamRSAFilter implements Filter {}
解决方法
1、去掉@Component(或者@Configuration)
注:@Order(2)此注解不添加亦可
@Order(2)
@WebFilter(filterName = "paramRSAFilter", urlPatterns = "/api/*")
public class ParamRSAFilter implements Filter {}
2、在启动类上添加@ServletComponentScan,且必须指定basePackages属性。
注:basePackages的值是自定义filter所在文件夹路径,不是该filter自身路径
@ServletComponentScan(basePackages = {"com.xxx.common.xxx"})
@SpringBootApplication(scanBasePackages={"com.xxx.xx""},exclude ={SecurityAutoConfiguration.class})
public class ServerApplication extends SpringBootServletInitializer {}