Spring中利用SchedulingConfigurer实现动态定时任务配置
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.SchedulingConfigurer;
import org.springframework.scheduling.config.ScheduledTaskRegistrar;
import org.springframework.scheduling.support.CronTrigger;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
@Configuration
public class DynamicScheduledTaskConfiguration implements SchedulingConfigurer {
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
taskRegistrar.setScheduler(taskExecutor());
taskRegistrar.addTriggerTask(
// 定义执行任务内容
() -> System.out.println("执行动态定时任务: " + System.currentTimeMillis() / 1000),
// 定义执行周期,这里设置为使用Cron表达式
triggerContext -> new CronTrigger("0/5 * * * * ?").nextExecutionTime(triggerContext)
);
}
// 动态设置线程池,也可以使用其他线程池策略
public Executor taskExecutor() {
return Executors.newScheduledThreadPool(5);
}
}
这个代码实例展示了如何在Spring中实现动态定时任务配置。通过实现SchedulingConfigurer
接口,并重写其configureTasks
方法,可以动态地向Spring容器中添加定时任务。在这个例子中,我们使用了ScheduledTaskRegistrar
来注册定时任务,并使用了Cron表达式来设定任务的执行周期。同时,我们还定义了一个taskExecutor
方法来动态设置线程池,以便于管理定时任务的并发执行。
评论已关闭