SpringBoot 之Quartz的使用


對於Quartz的使用,還是想說一句,SpringBoot真的很好用啊!

第一步:當然是引入依賴啦

   <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.3.RELEASE</version>
   </parent>


    <!-- quartz -->
    <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-quartz</artifactId>
     </dependency>

第二步:創建你的調度任務啊,繼承 QuartzJobBean,然后重寫方法(自己根據需求編寫業務邏輯)

public class FileHandleQuartz extends QuartzJobBean{
private Logger logger = LoggerFactory.getLogger(FileHandleQuartz.class);
    @Override
    protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        logger.info("定時任務執行啦!");
    }
}

第三步:當然要配置了

@Configuration
public class QuartzConfiguration {
    @Bean
    public JobDetail jobDetail() {
        return JobBuilder.newJob(FileHandleQuartz.class)
                .withIdentity("fileHandleQuartzJobDetail") //自己取名
                .storeDurably().build();
    }
    @Bean
    public Trigger trigger() {
        SimpleScheduleBuilder schedBuilder=SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(5).repeatForever(); //時間自己定,根據方法進行修改時間 return TriggerBuilder.newTrigger().forJob( jobDetail()).withIdentity("fileHandleQuartzJobTriger") //自己取名
                .withSchedule(schedBuilder).build();
    }
}

當然啦,如果想用cron表達式的,直接歡迎Schedule就好

CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule("*/5 * * * * ?"); //替換上面的第一行就好

 

第二種通過注解的方式:

@EnableScheduling
@Configuration
public class QuartzAnnotationTest {
    private Logger logger = LoggerFactory.getLogger(QuartzAnnotationTest.class);
    @Scheduled(cron = "*/5 * * * * ?")
    public void testAnnotation(){
       logger.info("注解的方式測試啦!");
    }
}

   對於兩種方式都可以實現定時任務,區別在於,在使用配置類(文件)的方式的時候,在項目啟動的時候就會執行,使用注解的方式會在啟動完成之后時間算起執行,少執行一次調度,有不對的或者補充的,歡迎哈。。。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM