Spring Schedule 实现定时任务
Spring Schedule 实现定时任务有两种方式 1. 使用XML配置定时任务, 2. 使用 @Scheduled 注解。 因为是Spring Boot 项目 可能尽量避免使用XML配置的形式,主要说注解的形式.
Spring Schedule 提供两种种形式的定时任务:
1.固定时间间隔
代码如下
@Component
@EnableScheduling
public class ScheduleJob {
public final static long SECOND=1*1000;
FastDateFormat fdf=FastDateFormat.getInstance("yyyy-MM-dd HH:mm:ss");
@Scheduled(fixedDelay = SECOND*2)//2秒执行一次
public void fixedRateJob(){
System.out.println(fdf.format(new Date()));
}
}
实现结果如下
2019-03-07 09:41:36
2019-03-07 09:41:38
2019-03-07 09:41:40
2019-03-07 09:41:42
2019-03-07 09:41:44
2019-03-07 09:41:46
2019-03-07 09:41:48
2019-03-07 09:41:50
2.利用cron表达式实现
代码如下
@Component
@EnableScheduling
public class ScheduleJob {
public final static long SECOND=1*1000;
FastDateFormat fdf=FastDateFormat.getInstance("yyyy-MM-dd HH:mm:ss");
@Scheduled(cron ="0/1 * * * * ? " )
public void fixedRateJob(){
System.out.println(fdf.format(new Date()));
}
}
如果不是springboot项目需要在spring配置文件中添加
<!—开启这个配置,spring才能识别@Scheduled注解 -->
<task:annotation-driven scheduler="qbScheduler" mode="proxy"/>
<task:scheduler id="qbScheduler" pool-size="10"/>