相应类上添加注解@EnableScheduling或者正在启动类上使用
需要执行定时任务的方法上添加@Scheduled注解了,前提条件是该方法不能有参数;
测试方法
@Scheduled(cron = "0/5 * * * * ?")
public void test(){
System.out.println("hhhhh");
}
通过数据库查询cron表达式 数据库数据为 “0/5 * * * * ?”
@Configuration
public class comlexJob implements SchedulingConfigurer {
@Mapper
public interface CronMapper{
@Select("select crom from qz limit 1")
String getCron() ;
}
@Resource
private CronMapper cronMapper;
//任务、触发器
@Override
public void configureTasks(ScheduledTaskRegistrar scheduledTaskRegistrar) {
//lambda写法
scheduledTaskRegistrar.addTriggerTask(
() -> System.out.println(LocalDateTime.now()),
triggerContext ->{
String cron = cronMapper.getCron();
return new CronTrigger(cron).nextExecutionTime(triggerContext);
}
);
// 常规写法
// scheduledTaskRegistrar.addTriggerTask(new Runnable() {
// @Override
// public void run() {
// //任务
// }
// },new Trigger(){
//
// @Override
// public Date nextExecutionTime(TriggerContext triggerContext) {
// return null;
// }
// });
}
}