zoukankan      html  css  js  c++  java
  • springboot自定义filter获取spring容器bean对象

      今天在自己定义的filter中,想要直接注入spring容器的其它bean进行操作,发现不能正常的注入:

    原因:web容器加载顺序导致, 加载顺序是listener——filter——servlet,当项目启动时,filter先于servlet初始化, 而Spring中默认bean的初始化是在Servlet后进行的,所以会注入失败

    解决办法:接下来编写一个SpringUtils进行手动注入bean

     1 @Component
     2 public class SpringUtils implements ApplicationContextAware{
     3     private static ApplicationContext applicationContext;
     4  
     5     @Override
     6     public void setApplicationContext(ApplicationContext applicationContext)
     7             throws BeansException {
     8         if (SpringUtils.applicationContext == null) {
     9             SpringUtils.applicationContext = applicationContext;
    10         }
    11  
    12     }
    13  
    14     public static ApplicationContext getApplicationContext() {
    15         return applicationContext;
    16     }
    17  
    18     //根据name
    19     public static Object getBean(String name) {
    20         return getApplicationContext().getBean(name);
    21     }
    22  
    23     //根据类型
    24     public static <T> T getBean(Class<T> clazz) {
    25         return getApplicationContext().getBean(clazz);
    26     }
    27  
    28     public static <T> T getBean(String name, Class<T> clazz) {
    29         return getApplicationContext().getBean(name, clazz);
    30     }
    31  }

    在需要使用的filter中,直接使用工具类拿到相应的对象

  • 相关阅读:
    Codeup
    IDEA基于Maven Struts2搭建配置及示例
    深入理解HTTP协议、HTTP协议原理分析
    25条提高iOS App性能的技巧和诀窍
    怎么在苹果Mac虚拟机上安装Win7
    app让个别界面横屏,其他的为竖屏,解决如下
    设置控制器,出现默认知道空隙
    论项目采购管理
    hybrid app
    iOS中使用 Reachability 检测网络
  • 原文地址:https://www.cnblogs.com/yinfengjiujian/p/11749647.html
Copyright © 2011-2022 走看看