将Spring单例与静态Quartz Job类集成

时间:2013-01-02 17:12:08

标签: spring serialization quartz-scheduler

我有一个名为CommandQueue的Spring单例,我是从Quartz Job类引用的。当作业触发时,它应该在CommandQueue中排队命令(在命令上调用"write()"使用Jackson序列化它,调用"Command.create(String)"反序列化命令)。

我遇到的问题是Job是由Quartz实例化的,而不是Spring,所以我不能@Autowire Job中的CommandQueue,也不能获得对{{1}的引用}。我也无法将CommandQueue传递给Job的构造函数,然后在作业的JobDataMap中序列化CommandQueue,因为当我反序列化CommandQueue时,我将创建一个新的CommandQueue实例,而不是引用单例。

目前我正在使用一种解决方法,我在其中静态引用Job实例中的CommandQueue单例,但我想知道是否有办法在不诉诸静态引用的情况下完成同样的事情。

ApplicationContext

1 个答案:

答案 0 :(得分:0)

我的错误,问题已在这里得到解答inject bean reference into a Quartz job in Spring?解决方案是使用SchedulerFactoryBean然后设置其ApplicationContextSchedulerContextKey属性