filter过滤器使用Autowired注入Bean为null

2023-04-07 15:55:15

需求场景:在登录过滤器中需要使用配置文件的参数值,使用Autowired注入配置类一直为null,但在controller层使用注入是能取到值得。就猜想是否是执行顺序的问题。

Bug原因:web应用启动的顺序是:listener->filter->servlet

Bug解决:

①:在init方法中使用filterConfig参数。

 ServletContext context = filterConfig.getServletContext();
        ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(context);
        LoginProperties loginProperties =  ctx.getBean(LoginProperties.class);

 

②:如果在dofilter方法中也可以使用request参数。

ServletContext context = request.getServletContext();
        ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(context);
        Bean  = ctx.getBean(Bean.class);

 

  • 作者:祗是辉哥哥
  • 原文链接:https://blog.csdn.net/weixin_42456466/article/details/89875273
    更新时间:2023-04-07 15:55:15