springboot+定时任务(四)
1.springboot整合定时任务
首先,该定时任务是基于注解EnableScheduling实现的,实现方式是入门级的。
使用的注解如下:
@EnableScheduling,类注解。用在springboot的启动类中,表示当前服务是支持定时任务的,容器会自动扫描。
@Component,类注解。用在定时任务类中,作为组件被容器扫描。
@Scheduled(fixedRate = 5000),方法注解。用在具体task方法上,后面参数中规定执行时间,比如fixedRate = 5000,就是说 下面的任务 每隔5s执行一次。
具体的实现:
启动类
@SpringBootApplication @EnableScheduling public class ThriftdemoApplication { public static void main(String[] args) { SpringApplication.run(ThriftdemoApplication.class, args); } }
定时任务类
@Component public class TestTask { private static final SimpleDateFormat dataFormat = new SimpleDateFormat("HH:mm:ss"); @Scheduled(fixedRate = 5000) public void reportCurrent(){ System.out.println("当前时间:"+dataFormat.format(new Date())); } }
2.@Scheduled() 的cron表达式
上面的定时任务的任务执行周期比较死板,使用cron表达式会更加的灵活。当然cron虽然可以支持到“年”,但是springboot是不支持年定时任务的。
cron的定时任务,可以通过前端操作来获取,这是操作页面:https://cron.qqe2.com/
复制这里的Cron 表达式,到@Scheduled() 的小括号中,即可。
比如@Scheduled(cron="18-30 * * * * ?"),从每一分钟的18秒到30秒 执行任务,18到30为闭区间。