文章目录
- 一、运行效果
- 二、项目结构
- 三、功能实现
-
- 1、项目依赖配置(pom.xml)
- 2、配置文件(application.yaml)
- 3、创建 TaskSchedulerProperties 配置类
- 4、定时任务的实现
- 5、任务管理器的实现
- 6、控制器的实现
- 7、启动应用程序类
- 8、视图控制器
- 9、前端页面(Thymeleaf + Bootstrap)
- 四、运行与测试
- 五、总结
本文代码下载:代码下载
SpringBoot3.3 优雅停止/重启定时任务功能太赞了!
在现代Java
应用开发中,定时任务是非常常见的功能。无论是定期备份、数据清理,还是定期发送通知,定时任务都能发挥至关重要的作用。然而,在一个复杂的应用程序中,如何优雅地管理这些定时任务的启动与停止,尤其是在不影响系统正常运行的情况下,显得尤为重要。
Spring Boot
提供了强大的任务调度支持,通过@Scheduled
注解可以轻松地创建定时任务,并且可以通过配置来灵活地管理这些任务的执行环境。在本文中,我们将深入探讨如何通过Yaml属性
配置自定义线程池,并详细介绍如何使用@Scheduled
注解实现多样化的定时任务。此外,我们还会探讨如何优雅地停止和重启这些任务,确保系统的稳定性和任务的灵活性。
一、运行效果
二、项目结构
为了实现我们的目标,我们的项目结构将包含以下部分:
- Spring Boot主应用程序:启动Spring Boot应用,并注册定时任务。
- 定时任务实现:定义定时任务的逻辑。
- 任务管理器:提供控制定时任务启停的方法。
- 前端页面:提供简洁的前端页面,允许用户通过页面来启停定时任务。
三、功能实现
1、项目依赖配置(pom.xml)
首先,我们需要在pom.xml
文件中添加相关的依赖:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.3.5</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com</groupId>
<artifactId>taskmanager</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>taskmanager</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>17</java.version>
</properties>
<dependencies>
<!-- Thymeleaf template engine -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!-- Spring Boot Web Starter -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Lombok for reducing boilerplate code -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2、配置文件(application.yaml)
在任务调度中,线程池的配置是影响任务执行效率和可靠性的重要因素。默认情况下,Spring Boot
为调度任务提供了一个单线程的执行器,但对于复杂的业务场景,我们往往需要一个更高效的多线程池来管理多个任务的并发执行。通过在application.yaml
中配置ThreadPoolTaskScheduler
,我们可以自定义线程池的大小以及关闭策略。
接下来,在src/main/resources/application.yaml
中添加以下配置:
server:
port: 8080
spring:
task:
scheduling:
pool:
size: 5 # 配置线程池大小,设为5个线程
shutdown:
标签:SpringBoot3.3,SpringBoot,spring,boot,springframework,任务,org,定时
From: https://blog.csdn.net/bjzhang75/article/details/143494454