springboot中使用filter时注入bean都是null的解决办法

1.踩坑

在springboot中 使用了filter, 并且注入了业务bean和redis工具类, 最后一上tomcat全完蛋,注入的bean都是null, 只能自行填坑 . 
首先是在使用@webfilter的情况下,不上外部tomcat时是没有问题的, 所以如果你的项目不上外部tomcat应该不会踩到坑里来

2.填坑

1.去掉@webfilter的那些注解, 这个filter应该是一个普通的类,没有注解,例如:
public class UploadFilter implements Filter {

Logger logger = LoggerFactory.getLogger(UploadFilter.class); //可以注入了
@Autowired
private RedisKit redisKit; //可以注入了
@Autowired
private SchoolDeviceService schoolDeviceService;
.....
}
2. 新增一个config类,用来手工创建filter的bean, 例如:
@Configurationpublic class WebConfig { 
  @Bean
 public Filter uploadFilter() { 
   return new UploadFilter();   
         } 
      @Bean
    public FilterRegistrationBean uploadFilterRegistration() {
  FilterRegistrationBean registration = new FilterRegistrationBean();   
  registration.setFilter(new DelegatingFilterProxy("uploadFilter"));   
  registration.addUrlPatterns("/uploadDatas");   
  registration.setName("uploadFilter");
  registration.setOrder(1);        return registration;
    }

}


 上一篇

年终总结

 Valine评论

为了便于区分,请您在留言时填写一下昵称
Emoji | Preview
{{comments.length}} 评论
{{comment.username}} {{comment.osbrowser}}
{{comment.createTime | filterTime}} 回复

{{commentSon.username}} {{commentSon.osbrowser}}
{{commentSon.createTime | filterTime}} 回复
@{{commentSon.replyname}}

谢谢捧场😁