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中,直接使用工具类拿到相应的对象

  • 相关阅读:
    高并发性能测试
    Gitlab源码库里代码提交后,如何触发jenkins自动构建?
    San初步使用
    客户端通过HTTP协议与服务端交换数据
    Web服务端开发需要考虑的问题(续)
    Web服务端开发需要考虑的问题
    我对Web开发的认识
    postgresql远程连接中断的处理
    关于12306的想法
    oracle context
  • 原文地址:https://www.cnblogs.com/yinfengjiujian/p/11749647.html
Copyright © 2011-2022 走看看