我在我的 apache isis 项目中使用 quartz 进行调度。我有一个 MyJob 类,它实现了 org.quartz.Job 并且它有方法 execute,当调度程序在给定时间触发时调用。
我的问题是,我有一个类 DemoService
并且它有一个方法 showDemo()
我想从 execute 方法中调用它。
但是当调度程序运行时,它会在 demoService.showDemo()
处抛出 Null Pointer Exception。
我无法在该类中注入(inject)任何服务。它总是给出 NPE。如何将服务注入(inject) MyJob
类?
这是代码:-
public class MyJob implements Job {
@Inject
DemoService demoService;
public MyJob() {
}
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
demoService.showDemo();
}
}
最佳答案
最简单的方法是将要运行的逻辑放在AbstractIsisSessionTemplate 的子类中,然后从您的 quartz 作业中实例化并执行它。
Incode Platform 的 quartz 作业使用此技术来运行后台命令,请参阅 here ; quartz module从 quartz 的角度展示了这一点(我想你已经明白了)。
HTH 丹
关于java - 无法在 Apache isis quartz 中注入(inject)服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46398518/