springboot 控制定时任务启停
时间: 2024-09-24 11:01:24 浏览: 46
Spring Boot 中可以使用 Spring Task 或者第三方库如 Quartz 或者 CronScheduler 来实现定时任务的启动和停止。以下是基本步骤:
1. **Spring Task**: 使用 `@Scheduled` 注解的 `Runnable` 或 `Callable` 类型的方法来创建定时任务。启动时,在配置文件(application.properties 或 application.yml)中设置 `spring.task.schedule.initial-delay` 和 `spring.task.schedule.repeat` 属性来指定首次执行延迟时间和周期。
```java
@Component
public class MyTask {
@Scheduled(cron = "0 0/5 * * * ?") // 每五分钟执行一次
public void executeTask() {
// 业务逻辑
}
}
```
启动应用时,该任务会按照配置自动开始运行。关闭应用或手动停止服务时,如果需要暂停所有定时任务,可以在关闭之前调用 `TaskExplorer.stopAll()` 方法。
2. **Quartz 或 CronScheduler**: 如果你需要更复杂的调度策略,可以引入 Quartz 或其他类似库。首先添加依赖,然后配置 Job、Trigger 和 Scheduler。例如,Quartz 需要在 ApplicationRunner 中启动 Scheduler,并在 ShutdownHook 中停止它。
```java
@Autowired
private Scheduler scheduler;
@Override
public void run(String... args) throws Exception {
// 初始化并启动scheduler
scheduler.start();
}
// Shuts down the scheduler when the application shuts down
@SpringBootApplication
public class App implements CommandLineRunner {
@Autowired
private SchedulerFactoryBean factoryBean;
@Override
public void run(String... arg0) throws Exception {
factoryBean.initialize();
factoryBean.getScheduler().shutdown(true);
}
}
```
要停止定时任务,只需调用 `scheduler.shutdown()` 或 `factoryBean.getScheduler().shutdown()`。
阅读全文