博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Quartz总结(二):定时任务中使用业务类(XXService)
阅读量:5914 次
发布时间:2019-06-19

本文共 1481 字,大约阅读时间需要 4 分钟。

零、引言

上一篇文章:讲到了Spring集成Quartz的几种基本方法。

在实际使用的时候,往往会在定时任务中调用某个业务类中的方法,此时使用QuartzJobBean和MethodInvokeJobDetailFactoryBean的区别就出来了。

一、QuartzJobBean

在继承QuartzJobBean的Job类中,使用XXService的时候,会报 空指针异常,原因是因为使用此方法的时候Job对象的创建时Quartz创建的,而XXXService是通过Spring创建的,两者不是同一个系统的,所以在Job类中使用由Spring管理的对象就会报空指针异常。

其具体使用场景如下:

public class TestJob extends QuartzJobBean {    @Autowired    private TestService testSevice;        @Override    protected void executeInternal(JobExecutionContext arg0) throws JobExecutionException {        testSevice.sayHi();        System.out.println(TimeUtils.getCurrentTime());    }}

解决方式就是替换系统默认的SchedulerFactory

public class BsQuartzJobFactory extends AdaptableJobFactory {    @Autowired    private AutowireCapableBeanFactory capableBeanFactory;        @Override    protected Object createJobInstance(TriggerFiredBundle bundle) throws Exception {                Object jobInstance=super.createJobInstance(bundle);        capableBeanFactory.autowireBean(jobInstance);        return super.createJobInstance(bundle);    }}

然后在XML中配置:

二、使用MethodInvokeJobDetailFactoryBean

因为对象的创建时Spring进行创建的,所以可以直接使用。基于此,推荐大家使用此种方式进行集成,方便,简单。

 

转载于:https://www.cnblogs.com/LiuChunfu/p/5598626.html

你可能感兴趣的文章
spring boot 整合mybatis 无法输出sql的问题
查看>>
为什么要用IPython/Jupyter?
查看>>
数据可视化之 Sankey 桑基图的实现
查看>>
前端面试题总结
查看>>
(三)从jvm层面了解线程的启动和停止
查看>>
SOA和微服务之间的区别
查看>>
IBM提出8位深度网络训练法,提速4倍同时保持高精度
查看>>
苹果发布Core ML 2
查看>>
“智能云”战略新品震撼发布,开发者如何快速上手?
查看>>
华为吴晟:分布式监控系统的设计与实现
查看>>
[deviceone开发]-do_Webview的基本示例
查看>>
亚马逊Alexa借助神经网络生成播音员声音
查看>>
比特大陆新一轮裁员50%,回应称系人员调整
查看>>
将 Measurements 和 Units 应用到物理学
查看>>
如何确定所运行的 SQL Server 2005 的版本?
查看>>
我的友情链接
查看>>
自动化安装Mysql5.6-脚本实现
查看>>
分布式事务:不过是在一致性、吞吐量和复杂度之间,做一个选择
查看>>
【云图】如何设置支付宝里的家乐福全国连锁店地图?
查看>>
对于json_lib包的使用
查看>>