springboot統合quartz(一)

3854 ワード

springbootはできるだけ少ないxmlの使用を提唱しています.
開発においては常にタイマーに関わる必要があります.注文したタイマーの使い方を見ます.
一、対応する依存を追加する
使用するquartzのバージョンが1.8.4なら、おめでとうございます.org.quartz.impl.JobDetailImplのバージョンは互換性がないので、高バージョンのspringの中でMethodInvoking JobDetail FactoryBenの種類が変更されました.JobDetailを初期化する時は、new JobDetailクラスが必要です.
                                        下の二つのものを忘れずに添付してください.ビルの主は第二のものを追加することを忘れてしまいました.間違いを報告しています..
                   
			org.springframework
			spring-context-support
		
		
			org.springframework
			spring-tx
		
       
	        
			org.springframework.boot
			spring-boot-starter-test
			test
		
		
			org.springframework.boot
			spring-boot-starter-web
		
		
		
			org.quartz-scheduler
			quartz
			2.2.1
		
二、任務類
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@EnableScheduling   //             
@Component
@Configuration
public class ScheduledTasks {

  public void reportCurrentByCron(){
      System.out.println ("Scheduling Tasks Examples By Cron: The time is now " + dateFormat ().format (new Date()));
  }

  private SimpleDateFormat dateFormat(){
      return new SimpleDateFormat ("HH:mm:ss");
  }

}
三、配置類は、以前にspring.xmlに配置されたモニターと似ています.
@Configuration
public class QuartzConfigration {
  //        ScheduledTasks           ,      
  @Bean(name="mfactoryBean")
  public MethodInvokingJobDetailFactoryBean mfactoryBean(ScheduledTasks ScheduledTasks){
    MethodInvokingJobDetailFactoryBean md=new MethodInvokingJobDetailFactoryBean();
    //    
    md.setGroup("group---1");
    //          
    md.setName("quartz---1");
   //      ,     ( )       ,   ( )      , 
    md.setConcurrent(false);
   md.setTargetObject(ScheduledTasks);
    //     
    md.setTargetMethod("reportCurrentByCron");
    return md;
    
  }
  
  //          ,                
  @Bean(name="cfactoryBean")
  public CronTriggerFactoryBean cfactoryBean(MethodInvokingJobDetailFactoryBean mfactoryBean){
    CronTriggerFactoryBean cfb=new CronTriggerFactoryBean();
    cfb.setJobDetail(mfactoryBean.getObject());
    cfb.setCronExpression("*/5 * * * * ?");  //5     
    cfb.setName("quartz---cron");
    return cfb;
  
  }
  
  //  quartz     
  @Bean
  public SchedulerFactoryBean sfactoryBean(Trigger cronJobTrigger){
    SchedulerFactoryBean sfb=new SchedulerFactoryBean();
  
    //     ,    1    
    sfb.setStartupDelay(5);  
    sfb.setTriggers(cronJobTrigger);
    return sfb;
     
  }
四、始動類
普通のスプリングブックのスタートクラスです.
@SpringBootApplication
public class Application {
    public static void main(String[] args) {
      SpringApplication.run(Application.class, args);
    }
    
続いて、springboot+複数のquartz、springboot+quartz動的な配置、sprigboot+quartz+dubbを更新します.
こんなに多くて、あなたはすべて私を見て、やはり真実の愛です!!!