springboot中的定时任务
1. Java自带的java.util.Timer类
timer:配置比较麻烦,时间延后问题
timertask:不推荐
2. Quartz框架
配置更简单
xml或者注解,暂不写
3. springBoot使用注解开启定时
1. 添加依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency>
2. 启动类添加注解
@SpringBootApplication @EnableCaching //开启缓存,和定时物无关 @EnableScheduling //定时任务注解 @MapperScan(basePackages = { "com.xxy.server.modules.*.dao" })
3. 常用的表达式
1、cron 定时任务表达式 @Scheduled(cron="*/1 * * * * *") 表示每秒 crontab 工具 https://tool.lu/crontab/ 2、fixedRate: 定时多久执行一次(上一次开始执行时间点后xx秒再次执行;) 3、fixedDelay: 上一次执行结束时间点后xx秒再次执行,上一次事件结束后延后x执行 4、fixedDelayString: 字符串形式,可以通过配置文件指定
4. 例子
定时任务业务类 加注解 @Component被容器扫描
//例子,设置没6秒执行一次 private int count = 0; @Scheduled(cron = "*/6 * * * * ?") private void process(){ System.out.println("this is scheduler task running " + (count++)); }