Quartz和Spring,Mybatis结合,读数据库空指针(NullPointerException)
2015-12-03 11:15
489 查看
项目中要用定时任务,采用的是Quartz,配置好了可以跑定时了,但是在读数据库的时候报空指针,注入的mapper接口类没有获取到,费了点时间找到了原因,在这里记录下。我的Quartz是这么配置的
<!--Quartz--> <!-- 集成方式:JobDetailFactoryBean,并且任务类需要继承QuartzJobBean--> <!-- 定义jobDetail --> <bean id="jobDetailTest" class="org.springframework.scheduling.quartz.JobDetailFactoryBean"> <!-- durability 表示任务完成之后是否依然保留到数据库,默认false --> <property name="durability" value="true" /> <!-- 目标类 --> <property name="jobClass" value="com.wewolf.schedule.TestTask"></property> </bean> <!-- 触发器CornTrigger --> <bean id="cornTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <property name="jobDetail" ref="jobDetailTest"/> <!-- 每个10秒触发 --> <property name="cronExpression" value="0/10 * * * * ?"/> </bean> <!-- 定义核心调度器 --> <bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <ref bean="cornTrigger"/> </property> </bean>注入的jobDetail是JobDetailFactoryBean这个类。简单的说就是Quartz和Spring是两个容器,维护的东西不是一套。所以Spring注入的mapper接口类在Quartz中不能通过@Autowired或者@Resource获取到的,所以会报java.lang.NullPointerException。解决方式有几个,我用的解决方式是通过下面这种方式获取Spring注入的类
MailMapper mailMapper = BeanUtil.applicationContext.getBean(MailMapper.class);还有其他的解决方案,大多是通过别的方式来配置Quartz
相关文章推荐
- JAVA之关于This的用法
- [010]Java实现文件夹复制
- spring 定时任务配置
- crontab运行java程序的问题
- Java应用线上问题排查的常用工具和方法
- CXF开发webservice(2):利用spring开发webservice接口
- Java中public,private,final,static等概念的解读
- 通过地址url在myeclipse中找到对应的程序
- java学习笔记-设计模式9(代理模式)
- 【Problems】 当eclipse出现乱码
- java中方法为什么需要返回值?
- JavaEE_Mybatis_SpringMVC_Mybatis_lesson12_一对多关联映射(ResultMap)
- Spring中使用CronTrigger进行任务调度
- 卸载JDK之后,eclipse打不开
- Java里Serializable的那些事
- JAVA过滤器
- java判断文件是否存在
- ubuntu14配置jdk1.7
- java war 打包、解压命令
- SpringJDBC的JdbcTemplate