1、基于@Scheduled可配置开发
application.propertites:
read.timer.parmas=0 0/1 * * * *
定时类:
@Component
public class ScheduledService {
Logger logger= LoggerFactory.getLogger(ScheduledService.class);
@Scheduled(cron = "${read.timer.parmas}")
public void readConfigTable(){
logger.info("*****.read.timer.parmas");
}
}
启动类:
@SpringBootApplication
@EnableScheduling //必须
public class DataApplication {
public static void main(String[] args) {
SpringApplication.run(DataApplication.class,args);
}
}
2、基于代码实现
(1)核心代码
@Component
@EnableScheduling
public class TestScheduledParams implements SchedulingConfigurer{
Logger logger= LoggerFactory.getLogger(TestScheduledParams.class);
public static String DEFAULT_CORN="0/3 * * * * *";
//##动态传参要给默认值。
public static String corn=DEFAULT_CORN;
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
taskRegistrar.addTriggerTask(new Runnable() {
@Override
public void run() {
// logger.info("定时任务逻辑");
}
}, new Trigger() {
@Override
public Date nextExecutionTime(TriggerContext triggerContext) {
//任务触发,可修改任务的执行周期
CronTrigger cronTrigger = new CronTrigger(corn);
Date date = cronTrigger.nextExecutionTime(triggerContext);
return date;
}
});
}
}
(2)其他类或方法动态传参赋值
TestScheduledParams.corn="0/20 * * * * *"