前情叙述
记录以下这个坑,我的情况大致是这样的,我在用webmagic写爬虫,在类中通过@Resoource(@Autowired也一样)注入dao接口实例。
然后我在process方法中引用这个实例发现这个实例在这里一直为null,然后我在测试类或者当前类的main函数中引用dao实例就没问题,一切正常(当时 黑人问号脸???)
几经波折,发现原因是spring和多线程安全的问题,不让注入。因为我也没研究过webmagic源码,不过我个人觉得跟webmagic没有与spring容器相关联可能很有关系,
解决方案
我用的是很简单暴力的方法,spring不让自动注入,那就手动注入呗,在process方法中通过ApplicationContext获取对应那个dao bean实例,然后可以了。
附上网上其它博客参考:spring 在Thread中注入@Resource失败,总为null的解决方案

本文介绍了一个在使用WebMagic爬虫框架时遇到的Spring注入问题。当尝试在爬虫的process方法中通过@Autowired注解注入DAO实例时,发现该实例始终为null。经过排查,确定问题是由于WebMagic的多线程环境下与Spring容器不兼容导致。最终通过在process方法中手动通过ApplicationContext获取DAO实例解决了问题。
1153

被折叠的 条评论
为什么被折叠?



