springboot中注入FilterRegistrationBean不生效原因

springboot中注入FilterRegistrationBean不生效原因

回顾

  最近自定义了两个过滤器,接口请求返回加密sql注入处理过滤器,因为在封装一些工具包,我在单独调好之后,就打算做成一个注解,像springboot启动类上加@EnableScheduling一样,可以随意控制,当我不想让这俩过滤器生效的时候,那就不加这个注解就可以了。
  当然我想到了FilterRegistrationBean的使用方法,注入这两个过滤器。
  但是当我写完之后,打成包之后,发现只有sql注入过滤器生效。

原因

  原因就是我通过@Bean注解注入FilterRegistrationBean时,没有对它们起别名,造成冲突,只能注入一个。
  我的工程里,写了两个下边的方法:

注入加密过滤器
 /**
     * @return 注入加密过滤器
     */
    @Bean
    public FilterRegistrationBean filterRegistration() {
    
    
        FilterRegistrationBean registration = new FilterRegistrationBean();
        registration.setFilter(new EncryptionFilter());
        registration.addUrlPatterns("/*");
        registration.setName("encryptionFilter");
        registration.setOrder(1);
        return registration;
    }
注入sql注入过滤器
 /**
     * @return 注入加密过滤器
     */
    @Bean
    public FilterRegistrationBean filterRegistration() {
    
    
        FilterRegistrationBean registration = new FilterRegistrationBean();
        registration.setFilter(new SqlInjectManagerFilter());
        registration.addUrlPatterns("/*");
        registration.setName("sqlInjectManagerFilter");
        registration.setOrder(2);
        return registration;
    }

  这个问题虽然简单,但是确实影响到我思路了,我最初一直在考虑是不是我做的springboot启动类加注解触发过滤器注入的方式不对,也是因为我看了下@EnableTransactionManagement的注入方式,我差点就怀疑@Import在打成工具包后不能多个使用的问题。尴尬~~~
  当我一比较这俩方法的时候,我才怀疑到名字冲突了。因此就分别对它们加了名称如下:

 /**
     * @return 注入加密过滤器
     */
    @Bean(name = "encryptionFilter")
    public FilterRegistrationBean filterRegistration() {
    
    
        FilterRegistrationBean registration = new FilterRegistrationBean();
        registration.setFilter(new EncryptionFilter());
        registration.addUrlPatterns("/*");
        registration.setName("encryptionFilter");
        registration.setOrder(1);
        return registration;
    }
 /**
     * @return 注入加密过滤器
     */
    @Bean(name = "sqlInjectManagerFilter")
    public FilterRegistrationBean filterRegistration() {
    
    
        FilterRegistrationBean registration = new FilterRegistrationBean();
        registration.setFilter(new SqlInjectManagerFilter());
        registration.addUrlPatterns("/*");
        registration.setName("sqlInjectManagerFilter");
        registration.setOrder(2);
        return registration;
    }

猜你喜欢

转载自blog.csdn.net/wohaqiyi/article/details/115390060
今日推荐