springboot自定义filter获取spring容器bean对象

本文内容纲要: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中,直接使用工具类拿到相应的对象

本文内容总结:springboot自定义filter获取spring容器bean对象

原文链接:https://www.cnblogs.com/yinfengjiujian/p/11749647.html

以上是 springboot自定义filter获取spring容器bean对象 的全部内容, 来源链接: utcz.com/z/362354.html

回到顶部