定时任务在我们开发中是广泛存在的,定时任务在初期我一般是直接利用多线程来实现,对于新手来说比较的复杂也不容易理解。自从接触到 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文件的位置
Application4、编写任务类(在任务方法上注解@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条数据");
}
}
网友评论