Spring中利用SchedulingConfigurer实现动态定时任务配置
    		       		warning:
    		            这篇文章距离上次修改已过416天,其中的内容可能已经有所变动。
    		        
        		                
                
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方法来动态设置线程池,以便于管理定时任务的并发执行。
评论已关闭