SpringBoot创建定时任务的示例详解

 更新时间:2024年04月23日 09:57:34   作者:青灯文案1  
在Spring Boot中创建定时任务,通常使用@Scheduled注解,这是Spring框架提供的一个功能,允许你按照固定的频率(如每天、每小时、每分钟等)执行某个方法,本文给大家介绍了SpringBoot创建定时任务的示例,需要的朋友可以参考下

网上有很多 icon表达式生成器 ,可以直接搜索 定时任务icon表达式生成器 ,这里就不放链接了。

1、在入口类开启定时任务支持

在 SpringBoot 应用的启动类上,添加 @EnableScheduling 注解来开启定时任务的支持。

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;

@SpringBootApplication
@EnableScheduling
public class Application {

	public static void main(String[] args) {
		SpringApplication.run(Application.class, args);
	}
}

2、创建定时任务

创建一个包含定时任务方法的类,并在该方法上使用@Scheduled注解来指定任务的执行频率。

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

@Component
public class ScheduledTasks {

	// 每5秒执行一次
	@Scheduled(fixedRate = 5000)
	public void doTaskEveryFiveSeconds() {
		System.out.println("任务每5秒执行一次:" + new Date());
	}

	// 每天的特定时间执行一次
	@Scheduled(cron = "0 0 12 * * ?") // 每天中午12点执行
	public void doTaskEveryDayAtNoon() {
		System.out.println("任务每天中午12点执行一次:" + new Date());
	}
}
  • fixedRate 属性用于指定任务执行的固定频率(以毫秒为单位)。
  • cron 属性则允许你使用CRON表达式来指定任务的执行时间。

这两个属性在实际的项目开发中都会做到配置文件中,便于修改。

3、配置定时任务线程池(可选)

默认情况下,Spring Boot使用单线程来执行所有的定时任务。如果需要并发执行多个定时任务,或者某个任务执行时间较长不希望阻塞其他任务,可以自定义定时任务的线程池。

在 application.properties 中设置相关配置

spring.task.scheduling.pool.size=5 # 线程池大小,可以用 ${} 配置
spring.task.scheduling.thread-name-prefix=task-scheduler- # 线程名前缀

也可以在配置类中自定义 TaskScheduler Bean

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;

@Configuration
public class SchedulerConfig {

	@Bean
	public ThreadPoolTaskScheduler threadPoolTaskScheduler() {
		ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
		scheduler.setPoolSize(5);
		scheduler.setThreadNamePrefix("task-scheduler-");
		return scheduler;
	}
}

启动SpringBoot应用,定时任务就会按照指定的频率执行。

请注意,@Scheduled注解的方法不应该有任何参数,并且返回类型应该是void。此外,@Scheduled注解的方法可以定义在配置类中,但最好将其定义在一个独立的Bean中,以便于测试和管理。

以上就是SpringBoot创建定时任务的示例详解的详细内容,更多关于SpringBoot创建定时任务的资料请关注脚本之家其它相关文章!

相关文章

  • mybatis的selectKey作用详解

    mybatis的selectKey作用详解

    这篇文章主要介绍了mybatis的selectKey作用详解,具有很好的参考价值,希望对大家有所帮助。以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。</P><P>
    2022-01-01
  • Deepin系统安装eclipse2021-03及CDT插件的安装教程

    Deepin系统安装eclipse2021-03及CDT插件的安装教程

    本教程教大家deepin20.1操作系统上安装eclipse_2021-03版的详细步骤及CDT插件的安装方法,通过图文展示的非常明了,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-06-06
  • Java中List.of()和Arrays.asList()的区别及原因分析

    Java中List.of()和Arrays.asList()的区别及原因分析

    这篇文章主要介绍了Java中List.of()和Arrays.asList()的区别及原因分析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • SpringBoot配置线程池的实现示例

    SpringBoot配置线程池的实现示例

    本文主要介绍了SpringBoot配置线程池的实现示例,主要包括在Spring Boot中创建和配置线程池,包括设置线程池的大小、队列容量、线程名称等参数,感兴趣的可以了解一下
    2023-09-09
  • Java高效实现电商产品排序实战

    Java高效实现电商产品排序实战

    这篇文章主要为大家介绍了Java高效实现电商产品排序实战,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • springboot整合log4j的踩坑实战记录

    springboot整合log4j的踩坑实战记录

    log日志的重要性不言而喻,所以我们需要在系统内根据实际的业务进行日志的整合,下面这篇文章主要给大家介绍了关于springboot整合log4j的踩坑实战记录,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-04-04
  • springboot结合前端实现网页跳转功能实例

    springboot结合前端实现网页跳转功能实例

    今天处理Springboot统一异常拦截的时候,遇到了页面跳转的问题,这篇文章主要给大家介绍了关于springboot结合前端实现网页跳转功能的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-12-12
  • Java concurrency集合之ConcurrentLinkedQueue_动力节点Java学院整理

    Java concurrency集合之ConcurrentLinkedQueue_动力节点Java学院整理

    这篇文章主要介绍了Java concurrency集合之ConcurrentLinkedQueue,需要的朋友可以参考下
    2017-06-06
  • Java 实战练习之网上电商项目的实现

    Java 实战练习之网上电商项目的实现

    读万卷书不如行万里路,只学书上的理论是远远不够的,只有在实战中才能获得能力的提升,本篇文章手把手带你用java+vue+Springboot+ssm+mysql+maven+redis实现一个网上电商项目,大家可以在过程中查缺补漏,提升水平
    2021-11-11
  • Java自动拆装箱简单介绍

    Java自动拆装箱简单介绍

    这篇文章主要为大家详细介绍了Java自动拆装箱的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10

最新评论