Spring的Task Scheduler中的Runnables

时间:2013-12-27 12:32:00

标签: java spring

我在Spring中使用以下代码片段来安排作业执行。通过查询数据库找到作业。一旦找到新作业(尚未安排),就会以编程方式进行安排。

我的问题是,这是为任务执行创建Runnables的方法吗?它是以正确的方式访问taskScheduler还是应该通过从应用程序上下文中提取实例来访问它?

@Service
public class TimeOfDayScheduler {
    @Autowired
    private JobExecutor jobExecutor;

    @Autowired
    private TaskScheduler taskScheduler;

    @Scheduled(cron = "${scheduler.interval}")
    @PostConstruct
    public void findNewJobs() {
        // Checks the database if any new jobs should be scheduled
        // ...
        // If found:

        scheduleJob(somejob);

        // ...
    }

    public void scheduleJob(final Job job) {
        Runnable task = new Runnable() {
            @Override
            public void run() {
                try {                    
                    jobExecutor.execute(job);
                } catch (Exception e) {
                    logger.error("Scheduler error", e);
                }
            }
        };

        taskScheduler.schedule(task, new CronTrigger(job.getCronPattern())
    }
}

0 个答案:

没有答案