Schedule定时任务器
schedule定时任务器,是spring3.0以后自带的一个定时任务器
springboot中配置
pom.xml
1 2 3 4 5
| <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> </dependency>
|
任务类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| package cn.job; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.util.Date; @Component public class MyScheduledTask { @Scheduled(cron = "0/5 * * * * ?") public void MyScheduledTask(){ System.out.println("定时器被触发"+new Date()); } }
|
启动类
1 2 3 4 5 6 7
| @SpringBootApplication @EnableScheduling public class APP { public static void main(String[] args) { SpringApplication.run(APP.class, args); } }
|
spring配置
一些没有入口类的项目,就比较适合了
配置方式1
在 TaskSchedulingConfig
中调用
taskRegistrar.addCronTask(() -> myScheduledTask.scheduleMethod(), "0/5 * * * * ?");
的方式,将定时任务的触发逻辑交给 taskRegistrar
来管理。这种方式更加灵活,可以在 TaskSchedulingConfig
中配置多个定时任务,并且可以根据需要动态添加或移除定时任务。这种方式适用于需要对定时任务进行动态管理的场景,例如根据用户设置动态调整定时任务的执行时间或频率。
任务类
1 2 3 4 5 6 7 8
| @Component public class MyScheduledTask {
public void scheduleMethod(){ System.out.println("\n===============定时器被触发==================\n"+new Date()); } }
|
配置类
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| @Configuration @EnableScheduling public class TaskSchedulingConfig implements SchedulingConfigurer {
@Autowired private MyScheduledTask myScheduledTask;
@Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { taskRegistrar.addCronTask(myScheduledTask::scheduleMethod,"0/2 * * * * ?"); } }
|
配置方式2
在 MyScheduledTask
类上使用
@Scheduled(cron = "0/2 * * * * ?")
的方式,直接在类内部定义定时任务的触发逻辑。这种方式更加简单,适用于只有一个定时任务或者不需要动态管理定时任务的场景。
任务类
1 2 3 4 5 6 7
| @Component public class MyScheduledTask {
public void scheduleMethod(){ System.out.println("\n===============定时器被触发==================\n"+new Date()); } }
|
配置类
1 2 3 4 5 6 7 8 9 10 11 12
| @Configuration @EnableScheduling public class TaskSchedulingConfig {
@Autowired private MyScheduledTask myScheduledTask;
@Scheduled(cron = "0/2 * * * * ?") public void configureTasks() { myScheduledTask.scheduleMethod(); } }
|