java无法在Apache isis quartz中注入服务
我在ApacheISIS项目中使用quartz进行调度。我有一个实现org的类MyJob。石英作业,它有方法execute,当调度程序在给定时间触发时调用该方法
我的问题是,我有一个类DemoService
,它有一个方法showDemo()
,我想从execute方法调用它。
但是当调度程序运行时,它在demoService.showDemo()
处抛出空指针异常
我无法在该类中注入任何服务。它总是给NPE。如何将服务注入MyJob
类
代码如下:-
public class MyJob implements Job {
@Inject
DemoService demoService;
public MyJob() {
}
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
demoService.showDemo();
}
}
# 1 楼答案
试试这个NullPointerException while deploying Quartz in Spring Boot
您需要使用SpringBeanJobFactory使用Spring的自动连接bean创建作业
类AutowiringSpringBeanJobFactory扩展SpringBeanJobFactory实现ApplicationContextAware{ 私人瞬时自动连线beanFactory beanFactory
} 然后当你这么做的时候
# 2 楼答案
最简单的方法是将要运行的逻辑放在AbstractIsisSessionTemplate的子类中,然后从quartz作业中实例化并执行它
Incode平台的quartz作业使用这种技术来运行后台命令,请参见here;这个quartz module从石英的角度显示了这一点(我想你已经弄明白了)
嗯 丹