使用Spring的Quartz作业和调度任务之间的区别?

我是Spring-boot(版本1.3.6)和Quartz的新手,我想知道使用Spring-scheduler创建任务有什么区别:

@Scheduled(fixedRate = 40000) public void reportCurrentTime() { System.out.println("Hello World"); } 

和石英方式 :

 0. Create sheduler. 1. Job which implements Job interface. 2. Create JobDetail which is instance of the job using the builder org.quartz.JobBuilder.newJob(MyJob.class) 3. Create a Triger 4. Finally set the job and the trigger to the scheduler 

在代码中:

  public class HelloJob implements Job { public HelloJob() { } public void execute(JobExecutionContext context) throws JobExecutionException { System.err.println("Hello!"); } } 

和sheduler:

 SchedulerFactory schedFact = new org.quartz.impl.StdSchedulerFactory(); Scheduler sched = schedFact.getScheduler(); sched.start(); // define the job and tie it to our HelloJob class JobDetail job = newJob(HelloJob.class) .withIdentity("myJob", "group1") .build(); // Trigger the job to run now, and then every 40 seconds Trigger trigger = newTrigger() .withIdentity("myTrigger", "group1") .startNow() .withSchedule(simpleSchedule() .withIntervalInSeconds(40) .repeatForever()) .build(); // Tell quartz to schedule the job using our trigger sched.scheduleJob(job, trigger); 

Quartz是否提供了更灵活的方式来定义作业,触发器和调度程序,还是Spring Scheduler还有其他更好的方法?

Spring Scheduler是一个抽象层,用于隐藏不同JDK中Executors的实现,如Java SE 1.4,Java SE 5和Java EE环境,它们都有自己的特定实现。

Quartz Scheduler是一个完全成熟的调度框架,它允许基于CRON或简单的周期性任务执行。

Spring Scheduler确实以Trigger的forms提供与Quartz调度程序的集成,以使用Quartz调度程序的全部function。

在不直接使用Quartz Scheduler特定类的情况下使用Spring Scheduler的优点是抽象层提供了灵活性和松散耦合。