架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7571|回复: 2

[资料] Listener中@Autowired无法注入的问题

[复制链接]
发表于 2019-4-4 15:23:22 | 显示全部楼层 |阅读模式
最近在用监听器的时候遇到了spring无法注入的问题,代码如下,这个task总是null,包明明已经被扫到了,就是注入不进来。

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

做如下修改:

从spring的上下文中获取,完美解决了问题。


Springboot @Autowired 无法注入问题
https://www.itsvse.com/thread-6397-1-1.html
(出处: 架构师_程序员)






上一篇:如何使用Bootstrap4显示和隐藏元素
下一篇:Java注解@PostConstruct与@PreDestroy详解及实例
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2019-4-4 15:54:53 | 显示全部楼层
即使您将实体监听器设为@Component,JPA使用的实际上只是该类的一个实例,而不是Spring托管bean。这就是你得到NullPointerException的原因。该accountHistoryRepo会一直是空的。

https://stackoverflow.com/questi ... n-using-postpersist

注入依赖于无状态bean的hack是将依赖项定义为“static”,创建一个setter方法,以便Spring可以注入依赖项(将其分配给静态依赖项)。

将依赖项声明为static。



创建一个方法,以便Spring可以注入它。



参考资料:https://stackoverflow.com/questi ... -jpa-entitylistener
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2019-4-4 16:03:23 | 显示全部楼层
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2024-4-26 07:39

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表