使用SpringBoot快速实现定时任务

2019-10-25  本文已影响0人  0小水瓶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、结果

执行结果
上一篇下一篇

猜你喜欢

热点阅读