最简单的定时器Quartz
使用
Maven依赖
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.3</version>
</dependency>
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
@Configuration
@EnableScheduling
public class LogQuartzConfig {
private static final Logger log= LoggerFactory.getLogger(LogQuartzConfig.class);
@Scheduled(cron = "*/5 * * * * *")
public void report(){
//具体任务的业务逻辑代码
log.info("定时执行了");
}
}
@EnableScheduling:通过在配置类注解@EnableScheduling来开启对计划任务的支持,然后在要执行计划的方法上加注解 Scheduled,声明这是一个计划任务。
@Scheduled:注解为定时任务,在cron表达式里写执行的时机。
Logger log = LoggerFactory.getLogger(AdController.class)意思
由Logger的名称可以知道这句的意思是用Logger工厂获取Logger实例,但是不明白其中的原理,https://blog.csdn.net/zerolaw/article/details/80946761
corn表达式
corn表达式由6~7个由空格分隔的时间元素组成,第7个元素可选。
位置 | 含义 | 范围 |
---|---|---|
1 | 秒 | 1~59 |
2 | 分钟 | 1~59 |
3 | 小时 | 1~23 |
4 | 月份中的哪一天 | 1~31 |
5 | 月份 | 1~12或者 JAN~DEC |
6 | 星期几 | 1~7或者 SUN~SAT |
7 | 年份 | 1970~2099 |
cron表达式的每个字段都可以显示一个值(如:49),一个范围(如:1-6),一个列表(如:1,3,5)或者一个通配符(如:*)。注意:星期的1-7的含义周日是一周的开始所以,1代表周日,2代表周一,一直到7代表周六。
特殊字符说明
“*”代表每一个值,可用于所有字段。
“-”中划线,表示一个范围。比如在对应位置上写10-20表示在10-20秒之间。
“,”使用逗号间隔的数据表示一个列表。比如:10,12,14 表示在10秒12秒14秒执行具体任务。
“/”通常表示为x/y,表示起始值,y表示值的增量。
http://cron.qqe2.com/