也许这篇文章的名字应该改成《Quartz JobFactory的使用》,因为正是使用JobFactory解决的Quartz Job类有参数构造方法的问题。同样,使用JobFactory也能解决Job已有实例重用的问题。
问题描述
问题如标题描述:就是希望为Job类的实例传递参数,结果发现找到的文档中创建Job实例的方法多是通过类反射来实现的,这显然不能满足我的需求。
也找到了一些文章建议使用jobDataMap来解决。不太喜欢这种方案,因为太难看了——只是搬个砖而已,却连底裤都漏出来了。
解决方案
翻了下官方文档,在Lesson 12: Miscellaneous Features of Quartz这一节找了关于
JobFactory的描述,虽然寥寥几行,却指明了解决问题的方向。
JobFactory,根据文档描述,是
Scheduler的一个配置项,主要用来完成Job实例的注入。默认使用的JobFactory只是简单地调用了Job 类的newInstance()方法来创建了实例。
要解决我的问题需要创建自定义的JobFactory实现。JobFactory的实现可以参考默认JobFactory的实现
SimpleJobFactory的一些代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
publicJobnewJob(