这里我有一个使用 Quartz 调度的示例
public class SampleJob implements Job {
@Inject
private MyClass sample;
@Override
public void execute( JobExecutionContext jobExecutionContext ) throws JobExecutionException {
sample.runSampleWithDBConnection();
}
}
public class SampleScheduling {
private String cronExpression = ;
public void run() throws SchedulerException {
Scheduler scheduler = new StdSchedulerFactory().getScheduler();
JobDetail job = newJob(SampleJob.class).withIdentity("job1", "group1").build();
CronTrigger trigger = newTrigger().withIdentity("trigger1", "group1")
.withSchedule(cronSchedule("0 5 * * * ? *"))
.build();
Date nextRuntime = scheduler.scheduleJob(job, trigger);
scheduler.start();
}
}
在上面的示例中,当 Quartz 触发 Job 时,注入的 MyClass 为空。其中 MyClass 是带有方法的简单 java 类
public class MyClass {
@Inject
@NamedDatabase("default")
private Database defaultDb;
public void runSampleWithDBConnection() {
defaultDb.getConnection();
}
}