我有一个名为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
答案 0 :(得分:0)
我的错误,问题已在这里得到解答inject bean reference into a Quartz job in Spring?解决方案是使用SchedulerFactoryBean然后设置其ApplicationContextSchedulerContextKey属性