SpringBoot项目使用注入的Service或DAO时值为空

本文讲述了作者在SpringBoot项目中遇到的一个问题:在爬虫程序里,使用@Autowired注入的NewsDAO或NewsService出现空指针异常。尽管其他地方注入正常,但爬虫中的bean并未被Spring管理。作者通过阅读相关文章,发现是因为在main函数中new的对象未被Spring管理。为解决此问题,作者创建了一个静态方法来获取被Spring管理的bean实例,从而在爬虫程序中成功调用。文章最后提到,作者计划后续会详细分享该爬虫程序的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近写了一个爬虫程序,实现通过搜狗微信获取微信公众号内容。首先可以正确获取内容到控制台,但当想把内容存储到数据库时遇到了问题。我把这个爬虫程序放到我已有的一个SpringBoot项目中,这里已有news新闻表的DAO和Service,在项目的Controller或者数据库初始化部分,想要往news表里插入数据,只需要@Autowired NewsDAO或者@Autowired NewsService即可。但在爬虫程序里这么使用却报java.lang.NullPointerException,说明对象没有用具体的类初始化。但在SpringBoot如果使用@Autowired自动注入bean是不需要初始化的啊,那究竟是为什么,怎么解决呢?

刚开始我以为是注解没有扫描到,因为之前和现在项目中都存在一些@Autowired后面的内容下面有红色波浪线提示could not autowire的情况,所以我想着先把这个问题解决了。但是无论是通过这篇文章的方法还是在@Autowired加(required = false),都没有真正的解决问题,只是让编辑器不报这个错误。这时我突然想到,经过上述改动后项目是可以正常运行的,其他地方可以正常插入数据,也就是注解扫描到了。而在爬虫程序中还是报空指针异常错误,所以应该不是这个问题,换一个思路。

这时我受到

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值