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

本文共 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

你可能感兴趣的文章
字符串处理 2015百度之星资格赛 1002 列变位法解密
查看>>
修改纵断面图标注栏
查看>>
Flex创建带有空间信息的椭圆(Polygon)
查看>>
【转】参照protobuf,将json数据转换成二进制在网络中传输。
查看>>
wpf 输入停止一段时间后。执行事件
查看>>
享元模式
查看>>
Python中的str与bytes之间的转换的三种方法
查看>>
java异常常见面试问题
查看>>
课后作业5
查看>>
Centos7.1环境下搭建BugFree
查看>>
共用y轴的双图形绘制
查看>>
(错误) Eclipse使用Maven创建Web时错误
查看>>
第31讲 | 数字货币钱包服务
查看>>
P2073 送花
查看>>
iOS端项目注释规范附统一代码块
查看>>
c语言编程的限制,关于NOI系列赛编程语言使用限制的规定
查看>>
32个c语言关键字发音,C语言的32个关键字(读音、用法、注释)转来的,给刚接触C的...
查看>>
为煮酒新书《构建高可用Linux服务器》作序!
查看>>
Windows Azure中文博客 Windows Azure入门教学系列 (一): 创建第一个WebRole程序
查看>>
Linux学习之CentOS(四)----Linux各目录的介绍
查看>>