SpringBoot项目使用注入的Service或DAO时值为空
来源:互联网 发布:ae软件使用教程 编辑:程序博客网 时间:2024/06/01 07:20
最近写了一个爬虫程序,实现通过搜狗微信获取微信公众号内容。首先可以正确获取内容到控制台,但当想把内容存储到数据库时遇到了问题。我把这个爬虫程序放到我已有的一个SpringBoot项目中,这里已有news新闻表的DAO和Service,在项目的Controller或者数据库初始化部分,想要往news表里插入数据,只需要@Autowired NewsDAO或者@Autowired NewsService即可。但在爬虫程序里这么使用却报java.lang.NullPointerException,说明对象没有用具体的类初始化。但在SpringBoot如果使用@Autowired自动注入bean是不需要初始化的啊,那究竟是为什么,怎么解决呢?
刚开始我以为是注解没有扫描到,因为之前和现在项目中都存在一些@Autowired后面的内容下面有红色波浪线提示could not autowire的情况,所以我想着先把这个问题解决了。但是无论是通过这篇文章的方法还是在@Autowired加(required = false),都没有真正的解决问题,只是让编辑器不报这个错误。这时我突然想到,经过上述改动后项目是可以正常运行的,其他地方可以正常插入数据,也就是注解扫描到了。而在爬虫程序中还是报空指针异常错误,所以应该不是这个问题,换一个思路。
这时我受到这篇文章的启发,豁然开朗。原来我在爬虫程序里调用自动注入的bean是在main函数里一个new出来的对象中,对象是被new出来的,Spring没有自动注入,没有被Spring管理,故为null。所以解决方法是用一个类包装下需要自动注入的bean,然后写一个get方法返回,接着在爬虫程序里继承这个类。但是在我的爬虫程序里已经继承了一个类,所以这里不能通过继承的方式,只能写一个静态类函数createMysqlTemplete重新建立JDBC连接,然后在爬虫程序里调用。
之后我会写一篇文章来详述这个爬虫程序,敬请期待。
参考文献:
http://blog.csdn.net/xlxxybz1314/article/details/51404700
http://www.mamicode.com/info-detail-1968148.html
http://datahref.com/archives/32
- SpringBoot项目使用注入的Service或DAO时值为空
- MyBatis+Spring在注解@Autowried后通过反射的方式调用方法获取注入的Service或DAO对象为空
- SpringBoot+Mybatis整合报,service注入失败,dao注入失败,
- (亲测有效。)Spring MVC中,Controller中使用service只需使用注解,但是普通类获取 service或 dao 都是null空的。
- php 将csv文件内容导入数据库时值为空的解决
- SSH或Structs2项目中值栈为空的问题
- SpringBoot在自定义类中注入Service为null
- springboot与mybatis整合dao层不能注入的问题
- 使用Spring的Service注入Dao接口需要注意的细节问题
- 使用Spring的@Autowired 实现DAO, Service, Controller三层的注入
- 使用Spring的Service注入Dao接口需要注意的细节问题
- 在普通Java类里使用spring里注入的service、dao等
- SpringSecurity4使用UserDetailsService时无法注入数据库持久层的service、dao
- 在spring项目的普通java类中获取service或dao
- 定时任务 中的job中注入的service接口 为空 解决方法
- 解决Spring Boot 拦截器注入service为空的问题
- php 何时值为空 empty()=true
- 静态 方法中使用Autowired注解的service或dao的问题
- Hffman Tree
- 欧拉函数 (一些性质和运用)内置杜教筛
- socket-tcp-server python
- opencv- getStructuringElement()
- Redis相关指令学习(一)
- SpringBoot项目使用注入的Service或DAO时值为空
- Quartz.NET 入门
- 如何阅读Java源码
- Android多线程编程核心技术 (脑图笔记整理)
- Java设计模式透析之 —— 策略(Strategy)
- java读取文件夹下的文件
- Android ble中nitify和indication的区别
- 最大似然估计 (MLE) 最大后验概率(MAP)
- team、Bridge模式