关于Spring中管理Bean的杂谈

1 filter、监听器,不能直接被spring容器管理

1 spring更多的是管理我们自己的各种组件,filter之类的是交给web容器来管的,我们不会自己去调用filter.

2 filter、监听器是生存在web容器里的,Spring MVC容器也是存活在web容器里的,他们是平级关系,怎么能由Spring管理呢, 但filter、监听器是可以取到Spring容器的.

3 因为Spring用的是DispatcherSevlet,是在Filter之后执行的。

2 Listener监听器不能被Spring管理

​ 在使用EasyExcel中的读取excel时,需要使用到监听器,但是在Listener监听器中无法使用Spring容器的@Resource或者@Autowired 注解的方法注入bean,因为,在web Server容器中,无论是Servlet,Filter,还是Listener都不是Spring容器管理的,因此我们都无法在这些类中直接使用Spring注解的方式来注入我们需要的对象。Servlet的整个生命周期都是由Servlet容器来处理的。如果把它硬放到Spring容器中去创建,Servlet对象是可被Spring容器建出来,但Servlet容器可能根本就不知道这个Servlet是否存在,因为不在它自己的容器中。所以,servlet交给web server来管理,不要交给spring管理。

3 使用EasyExcel的自定义监听器,可使用Spring容器

​ 在监听器里面完成插入等操作,插入操作是通过mybatisPlus的条件构造器完成的,需要注入自定义的SubjectService来完成,但是直接在监听器里使用@Auwowired注入subjectService,会报空指针。
原因如下:
首先要区分Listener的生命周期和spring管理的bean的生命周期。
(1)Listener的生命周期是由servlet容器(例如tomcat)管理的,项目启动时ExcelListener是由servlet容器实例化并调用其contextInitialized方法,而servlet容器并不认得@Autowired注解,因此导致SubjectService实例注入失败。
(2)spring容器中的bean的生命周期是由spring容器管理的。
在web Server容器中,无论是Servlet,Filter,还是Listener都不是Spring容器管理的,因此我们在这些类中不能直接使用Spring注解的方式来注入我们需要的对象.

解决办法:

​ 1 可通过自定义工具类SpringUtil实现ApplicationContextAware接口, 从而在监听器中通过工具类SpringUtil获得Spring容器中的Bean对象.

​ 2 使用hutool工具jar中提供的SpringUtil获取Spring容器Bean对象.

相关推荐

  1. 关于Spring管理Bean杂谈

    2024-02-20 12:42:01       31 阅读
  2. 关于Spring Bean容器理解

    2024-02-20 12:42:01       34 阅读
  3. spring基于xmlbean管理总结

    2024-02-20 12:42:01       46 阅读
  4. 怎么“访问”Spring容器管理bean

    2024-02-20 12:42:01       18 阅读
  5. spring管理bean

    2024-02-20 12:42:01       11 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-20 12:42:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-20 12:42:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-20 12:42:01       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-20 12:42:01       20 阅读

热门阅读

  1. 01.Redis中间件实战1

    2024-02-20 12:42:01       28 阅读
  2. C 练习实例71-结构体

    2024-02-20 12:42:01       28 阅读
  3. Vue2聊天框滚动条定位

    2024-02-20 12:42:01       30 阅读
  4. k8s实用命令

    2024-02-20 12:42:01       31 阅读
  5. 探索 Electron Egg:构建跨平台桌面应用的理想选择

    2024-02-20 12:42:01       37 阅读
  6. CC攻击有哪些防御手段?

    2024-02-20 12:42:01       32 阅读
  7. 6.类模板与继承

    2024-02-20 12:42:01       31 阅读
  8. AIAG & VDA FMEA的变化有哪些——FMEA软件

    2024-02-20 12:42:01       29 阅读
  9. 如何优化Docker镜像的大小?

    2024-02-20 12:42:01       26 阅读
  10. 机器人仓库搬砖

    2024-02-20 12:42:01       36 阅读