spring注入为null

发布于 2021-12-02 13:33:25 字数 237 浏览 905 评论 18

最近在学习爬虫,找到了webmagic和crawler4j这两个开源项目,但是在webmagic的pipeline里面和crawler4j的visit里面使用了一个用@autowired注入的一个DAO,在处理数据的时候发现注入的bean为null,请问大家是否有遇到这种情况,为什么bean无法注入?

我看代码可能是因为这两个crawler都用了new的方式去新建线程,不知道有没有人知道如何解决这个问题?

多谢!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(18

嘦怹 2021-12-03 23:12:57

应该是你说的第一种情况,因为被注入的对象用了newInstance所以没有被spring管理到,这种情况用户自己new的有办法交给spring管理吗?

睫毛上残留的泪 2021-12-03 23:12:57

你可以看下源码,在CrawlController这个类中的start方法,调用的_c.clone,此方法是个java类的的 newInstance,所以你如果自己配置了些属性,再用这种方法给初始化,则会报空指针错误。你只要复写这个protected <T extends WebCrawler> void start(final AbstractWebCrawler _c, final int numberOfCrawlers, boolean isBlocking) 这个方法,方法里传递Class对象类型变更为对象实例,就OK了。

百思不得你姐 2021-12-03 23:12:56

@maradona 好的,我去找找看别人怎么处理的,谢谢你哈。

离不开的别离 2021-12-03 23:12:56

回复
没有被spring管理的对象,那就不能用注解注入 搜索引擎 + 关键字:普通java对象调用spring bean 你可以找到很多

坏尐絯 2021-12-03 23:12:55

@选哥去拯救世界 回复
@选哥去拯救世界 : 你的问题是咋解决的,我也遇到了同样的问题

南冥有猫 2021-12-03 23:12:54

一般spring注入为空,一个是被注入对象未被spring管理,一个是注入对象未被spring管理

看你描述,你可以在两个地方的构造方法中打印或者断点(没有就自己加一个无参的构造方法),然后你应该明白了

检查下注解,扫描路径等等...

因为看清所以看轻 2021-12-03 23:12:53

@Resource也没有办法注入

旧伤慢歌 2021-12-03 23:12:44

回复
那就给出代码,没代码没办法继续下去了

归途 2021-12-03 23:12:29

@阿信sxq 代码有点多,用的是crawler4j和webmagic开源代码,不方便抠到这里来

如日中天 2021-12-03 23:12:15

注入我都是用的

@Resource

在setter方法上面

瑾兮 2021-12-03 23:11:50

有,spring已经托管了

拍不死你 2021-12-03 23:10:57

@开源中国首席二弟子 配置正确的时候,什么情况下spring无法注入,这个你知道吗?

明月松间行 2021-12-03 23:10:00

回复
以前遇到过是这个bean根本没有初始化,不在容器里。还有是用了继承关系。你这个都排除了啊

长安忆 2021-12-03 23:09:49

其他地方autowired是正常的

倚栏听风 2021-12-03 23:07:03

回复
这样的话,代码编写没有问题吧,写一个其他的变量试试注入看,应该很好解决的

草莓味的萝莉 2021-12-03 23:04:26

@阿信sxq 什么其他变量?这里应该是spring的注入都是有问题的

风透绣罗衣 2021-12-03 23:04:02

回复
写个其他的变量让spring来注入

坏尐絯 2021-12-02 14:33:06

问题是那个dao实例实际生成没有,没生成的话,为什么没有生成

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文