java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > SpringBoot创建定时任务

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

作者:青灯文案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());
	}
}

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

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创建定时任务的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文