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-Plus 分页查询的实现示例

    MyBatis-Plus 分页查询的实现示例

    本文主要介绍了MyBatis-Plus 分页查询的实现示例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • Java实现自动生成缩略图片

    Java实现自动生成缩略图片

    这篇文章主要为大家详细介绍了Java实现自动生成缩略图片,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • IDEA 2022.1.4用前注意事项

    IDEA 2022.1.4用前注意事项

    这篇文章主要介绍了IDEA 2022.1.4用前注意事项,本文通过图文并茂的形式给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-08-08
  • SpringBoot中集成日志的四种方式

    SpringBoot中集成日志的四种方式

    在开发中,日志记录是保障应用程序健壮性、可维护性的重要手段,通过日志,我们可以记录系统的运行状态、捕获异常并进行调试,Spring Boot 默认使用的是 Logback,但你也可以根据需求选择其他框架,以下是几种常用的日志集成方法,需要的朋友可以参考下
    2024-10-10
  • Java程序打包成exe文件的完整图文教程

    Java程序打包成exe文件的完整图文教程

    将Java程序打包成exe文件是一个多步骤的过程,涉及准备Java环境、项目代码,使用适当的工具进行打包,以及测试和优化生成的exe文件,这篇文章主要介绍了Java程序打包成exe文件的相关资料,需要的朋友可以参考下
    2026-04-04
  • Springboot jar运行时如何将jar内的文件拷贝到文件系统中

    Springboot jar运行时如何将jar内的文件拷贝到文件系统中

    因为执行需要,需要把jar内templates文件夹下的的文件夹及文件加压到宿主机器的某个路径下,以便执行对应的脚本文件,这篇文章主要介绍了Springboot jar运行时如何将jar内的文件拷贝到文件系统中,需要的朋友可以参考下
    2024-06-06
  • Java SpringBoot自动装配原理详解

    Java SpringBoot自动装配原理详解

    这篇文章主要介绍了详解Spring Boot自动装配的原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-09-09
  • Java中的OpenJDK使用原理

    Java中的OpenJDK使用原理

    这篇文章主要介绍了Java中的OpenJDK使用原理,OpenJDK是Java的开发工具包,关于Java为什么要使用它文章作简单介绍,感兴趣的朋友可以参考一下
    2022-06-06
  • MyBatis 使用权威指南

    MyBatis 使用权威指南

    MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集,本文给大家介绍MyBatis 使用指南,一起看看吧
    2017-03-03
  • SpringBoot之RabbitMQ的使用方法

    SpringBoot之RabbitMQ的使用方法

    这篇文章主要介绍了SpringBoot之RabbitMQ的使用方法,详细的介绍了2种模式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12

最新评论