zoukankan      html  css  js  c++  java
  • 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("注解的方式测试啦!");
        }
    }

       对于两种方式都可以实现定时任务,区别在于,在使用配置类(文件)的方式的时候,在项目启动的时候就会执行,使用注解的方式会在启动完成之后时间算起执行,少执行一次调度,有不对的或者补充的,欢迎哈。。。

  • 相关阅读:
    控制器之间的通信(传值方法)以及多次调用通信
    关于ios项目沙盒中的文件和Xcode项目创建的文件
    解决cell循环利用造成的重复勾选
    让TabelView视图中自定义的Toolbar固定(不随cell的移动而移动)
    jsonString转NSDictionary
    日期字符串转换 and 两个日期相减
    Java虚拟机 简介
    浅谈操作系统对内存的管理(转)
    Java虚拟机规范(Java SE 7)笔记
    StringUtils
  • 原文地址:https://www.cnblogs.com/gdhzdbh/p/10643856.html
Copyright © 2011-2022 走看看