开启定时任务
@Configuration
@EnableScheduling
@ComponentScan(basePackages="com.myco.tasks")
public class AppConfig {
}
如果需要对定时任务的生命周期有其他的操作,可以实现接口SchedulingConfigurer
@Configuration
@EnableScheduling
public class AppConfig implements SchedulingConfigurer {
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
taskRegistrar.setScheduler(taskScheduler());
taskRegistrar.addTriggerTask(
new Runnable() {
public void run() {
myTask().work();
}
},
new CustomTrigger()
);
}
@Bean(destroyMethod="shutdown")
public Executor taskScheduler() {
return Executors.newScheduledThreadPool(42);
}
@Bean
public MyTask myTask() {
return new MyTask();
}
}
详细信息参考 @EnableScheduling注解官方API
配置定时任务
package com.myco.tasks;
@Component
public class MyTask {
@Scheduled(fixedRate=1000)
public void work() {
// task execution logic
}
}
注解@Scheduled
有如下参数
cron
输入cron表达式fixedDelay
在最后一个任务执行完后,下个任务开始执行的间隔时间fixedRate
最后一个任务开始执行后,下个任务开始执行的间隔时间initialDelay
第一个任务执行前的延迟时间zone
时区
详细信息参考 @Scheduled注解官方API