首页 > 其他分享 >SpringBoot开发——SpringBoot3.3 实现停止/重启定时任务

SpringBoot开发——SpringBoot3.3 实现停止/重启定时任务

时间:2024-11-18 12:18:50浏览次数:3  
标签:SpringBoot3.3 SpringBoot spring boot springframework 任务 org 定时

文章目录

  • 一、运行效果
  • 二、项目结构
  • 三、功能实现
    • 1、项目依赖配置(pom.xml)
    • 2、配置文件(application.yaml)
    • 3、创建 TaskSchedulerProperties 配置类
    • 4、定时任务的实现
    • 5、任务管理器的实现
    • 6、控制器的实现
    • 7、启动应用程序类
    • 8、视图控制器
    • 9、前端页面(Thymeleaf + Bootstrap)
  • 四、运行与测试
  • 五、总结

本文代码下载:代码下载

SpringBoot3.3 优雅停止/重启定时任务功能太赞了!

在现代Java应用开发中,定时任务是非常常见的功能。无论是定期备份、数据清理,还是定期发送通知,定时任务都能发挥至关重要的作用。然而,在一个复杂的应用程序中,如何优雅地管理这些定时任务的启动与停止,尤其是在不影响系统正常运行的情况下,显得尤为重要。

Spring Boot 提供了强大的任务调度支持,通过@Scheduled注解可以轻松地创建定时任务,并且可以通过配置来灵活地管理这些任务的执行环境。在本文中,我们将深入探讨如何通过Yaml属性配置自定义线程池,并详细介绍如何使用@Scheduled注解实现多样化的定时任务。此外,我们还会探讨如何优雅地停止和重启这些任务,确保系统的稳定性和任务的灵活性。

一、运行效果

在这里插入图片描述
在这里插入图片描述

二、项目结构

为了实现我们的目标,我们的项目结构将包含以下部分:

  1. Spring Boot主应用程序:启动Spring Boot应用,并注册定时任务。
  2. 定时任务实现:定义定时任务的逻辑。
  3. 任务管理器:提供控制定时任务启停的方法。
  4. 前端页面:提供简洁的前端页面,允许用户通过页面来启停定时任务。

三、功能实现

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

相关文章

  • SpringBoot(二十六)SpringBoot自定义注解
    注解在springboot日常开发中使用的频率是很高的,官方为我们提供了很多注解,比如:@Autowired、@GetMapping等……但是我们有些特定的需求官方提供的注解是没有的。我们可以自定义注解。下面我们来了解一下自定义注解的过程。一:元注解Java为我们提供了几个元注解来自定义注解......
  • 【开源免费】基于SpringBoot+Vue.JS房屋租赁系统(JAVA毕业设计)
    本文项目编号T040,文末自助获取源码\color{red}{T040,文末自助获取源码}......
  • springboot毕设 数据分析及推荐机制的篮球周边电商平台 程序+论文
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着体育产业的蓬勃发展,篮球运动在全球范围内拥有庞大的粉丝基础。这一庞大的用户群体不仅关注篮球赛事,对篮球周边商品的需求也日益增长。传统的篮球......
  • SpringBoot运动心跳数据分析系统mef44(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、研究背景随着健康意识的不断提升,人们对自身运动状态及健康状况的关注度日益增强。心率作为反映人体健康状态的重要指标之一,其变化能够直观体现......
  • SpringBoot配置类
    在SpringBoot中,配置类是一种特殊的类,用于定义和配置Spring应用程序的各种组件、服务和属性。这些配置类通常使用Java注解来声明,并且可以通过Spring的依赖注入机制来管理和使用。Spring容器初始化时会加载被@Component、@Service、@Repository、@Controller等注解标识的类......
  • SpringBoot在线投票数据分析平台研究与设计8kxf0(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、项目背景与意义随着互联网技术的普及,在线投票活动逐渐成为各类组织、企业和个人进行决策和意见收集的重要手段。然而,如何高效地收集、整理和分......
  • SpringBoot在线教育系统a1q7y(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、项目背景与意义随着互联网技术的快速发展,教育领域正经历着前所未有的变革。在线教育系统作为数字化教育的重要载体,以其跨越时空限制、灵活便捷......
  • 基于Springboot+Vue的停车管理系统 (含源码数据库)
    1.开发环境开发系统:Windows10/11架构模式:MVC/前后端分离JDK版本:JavaJDK1.8开发工具:IDEA数据库版本:mysql5.7或8.0数据库可视化工具:navicat服务器:SpringBoot自带apachetomcat主要技术:Java,Springboot,mybatis,mysql,vue2.视频演示地址3.功能这个系......
  • 基于Springboot+Vue的中国蛇类识别系统 (含源码数据库)
    1.开发环境开发系统:Windows10/11架构模式:MVC/前后端分离JDK版本:JavaJDK1.8开发工具:IDEA数据库版本:mysql5.7或8.0数据库可视化工具:navicat服务器:SpringBoot自带apachetomcat主要技术:Java,Springboot,mybatis,mysql,vue2.视频演示地址3.功能这个系......
  • 【开源免费】基于Vue和SpringBoot的学生成绩管理系统(附论文)
    本文项目编号T620,文末自助获取源码\color{red}{T620,文末自助获取源码}......