美文网首页
使用SpringBoot快速实现定时任务

使用SpringBoot快速实现定时任务

作者: 0小水瓶0 | 来源:发表于2019-10-25 11:50 被阅读0次

    定时任务在我们开发中是广泛存在的,定时任务在初期我一般是直接利用多线程来实现,对于新手来说比较的复杂也不容易理解。自从接触到 Quartz之后,就感觉复杂的东西简单化是多么的重要。

    Quartz简介

    Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的程序。Jobs可以做成标准的Java组件或 EJBs。Quartz的最新版本为Quartz 2.3.0。(百度抄来的)

    废话不多说直接上手

    1、搭建SpringBoot开发环境

    引用博主

    2、在pom.xml中加入依赖

    <!--spring boot集成quartz-->
            <dependency>  
                <groupId>org.quartz-scheduler</groupId>  
                <artifactId>quartz</artifactId>  
                <version>2.2.3</version>  
            </dependency> 
            <dependency>  
                <groupId>org.quartz-scheduler</groupId>  
                <artifactId>quartz-jobs</artifactId>  
                <version>2.2.3</version>  
            </dependency>
    

    3、编写application类(在类名上注解@EnableScheduling)

    package com.alery;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.scheduling.annotation.EnableScheduling;
    
    
    //扫描指定的包
    //@SpringBootApplication(scanBasePackages={"com.lx.controller","com.lx.interceptor","com.lx.service","com.lx.dao"})
    @SpringBootApplication
    @EnableScheduling
    public class Application {
    
        public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
    
        }
    }
    
    注意:Application文件的位置
    Application

    4、编写任务类(在任务方法上注解@Scheduled(cron = "*/2 * * * * ?"))

    package com.alery.service;
    
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    import org.springframework.scheduling.annotation.Scheduled;
    import org.springframework.stereotype.Service;
    
    @Service
    public class JobService {
        int i=0;
        //cron = "0/3 40 11 * * ?" 每天11:40触发,没三秒执行一次
        @Scheduled(cron = "*/2 * * * * ?")
        public void printTime() {
            System.out.println("current time :"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
            System.out.println("i="+(i++));
        }
        @Scheduled(cron = "*/10 * * * * ?")
        public void printTime2() {
            System.err.println("current time :"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
            System.err.println("现在向数据库导入100条数据");
        }
    }
    
    cron表达式可以自行百度

    5、结果

    执行结果

    相关文章

      网友评论

          本文标题:使用SpringBoot快速实现定时任务

          本文链接:https://www.haomeiwen.com/subject/xklsvctx.html