springboot通过注解、接口创建定时任务详解

yizhihongxing

让我详细讲解一下关于“springboot通过注解、接口创建定时任务”的完整攻略。

一、创建定时任务需要的依赖

在项目中,需要导入以下依赖:

<!-- Spring Boot定时器需要的依赖 -->
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter</artifactId>
</dependency>

<!-- Spring Boot Web(服务器核心)需要的依赖 -->
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
</dependency>

二、通过注解创建定时任务

1.通过 @Scheduled 注解创建定时任务

Java类或方法上使用 @Scheduled 注解即可创建定时任务。

下面是一个使用 @Scheduled 注解的示例:

@Component
public class MyTask {

    @Scheduled(cron = "0/10 * * * * ?")
    public void run() {
        System.out.println("定时任务执行:" + new Date());
    }
}

注解参数含义如下:

  • @Component 用于将该类注册为 Bean,使 Spring Boot 可以管理该类的生命周期。
  • @Scheduled 注解用于指定定时任务的执行规则,比如 cron 表达式、fixedRate 表示间隔时间等等。这里使用的是 cron 表达式 0/10 * * * * ?,即每隔 10 秒执行一次该任务。

2.使用 @Scheduled 注解指定方法执行时间

下面是一个使用 @Scheduled 注解指定方法执行时间的示例:

@Component
public class MyTask {

    @Scheduled(fixedRate = 5000)
    public void run() {
        System.out.println("定时任务执行:" + new Date());
    }
}

注解参数含义如下:

  • @Component 用于将该类注册为 Bean,使 Spring Boot 可以管理该类的生命周期。
  • @Scheduled 注解用于指定定时任务的执行规则,其中 fixedRate 表示间隔时间,这里使用 5000 毫秒,即每隔 5 秒执行一次该任务。

三、通过接口创建定时任务

1.自定义定时任务接口

首先,我们需要自定义一个定时任务接口,该接口继承自 Runnable 接口,实现 run() 方法。

public interface MyTask extends Runnable {
}

2.实现定时任务接口

下面是一个实现定时任务接口的示例:

@Component
public class MyTask1 implements MyTask {

    @Override
    public void run() {
        System.out.println("MyTask1 执行:" + new Date());
    }
}

3.创建定时任务调度器

接下来,我们需要创建一个定时任务调度器,用于管理定时任务的注册、启动和停止等操作。

@Configuration
public class TaskSchedulerConfig {

    @Autowired
    private List<MyTask> myTasks;

    @Bean
    public TaskScheduler taskScheduler() {
        ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
        scheduler.setPoolSize(10);
        scheduler.setThreadNamePrefix("my-");
        return scheduler;
    }

    @Bean
    public SchedulingConfigurer schedulingConfigurer() {
        return new SchedulingConfigurer() {
            @Override
            public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
                for (MyTask task : myTasks) {
                    taskRegistrar.addFixedRateTask(task, 5000);
                }
            }
        };
    }
}

代码解释如下:

  • @Configuration 表示该类为配置类,用于配置 Spring Boot 应用上下文。
  • @Autowired 用于注入 MyTask 接口的所有实现类。
  • taskScheduler() 方法用于创建一个定时任务调度器。
  • schedulingConfigurer() 方法用于配置定时任务,使用 addFixedRateTask() 方法指定定时任务的执行规则。该示例中使用的是 fixedRate 设置间隔时间为 5000 毫秒。

四、总结

通过上述方法,我们可以通过注解、接口来实现定时任务,实现定时地执行任务。

这里还提供了两个示例:

  1. 基于 @Scheduled 注解创建定时任务;
  2. 基于接口创建定时任务,使用调度器进行任务的注册、启动和停止操作。

希望这篇文章能给你提供帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springboot通过注解、接口创建定时任务详解 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • Java中字符数组和字符串与StringBuilder和字符串转换的讲解

    下面我将为您详细讲解Java中字符数组和字符串与StringBuilder和字符串转换的完整攻略。 1. 字符数组和字符串 1.1 字符数组 在Java中,字符数组是由char类型的元素构成的一种数据结构,可以通过以下代码创建: char[] charArray = {‘H’, ‘e’, ‘l’, ‘l’, ‘o’}; 1.2 字符串 字符串是由一系列字符组…

    Java 2023年5月26日
    00
  • Java探索之Thread+IO文件的加密解密代码实例

    Java探索之Thread+IO文件的加密解密代码实例 介绍 本文将介绍如何使用Java的多线程和IO库对文件进行加密解密。具体来说,我们会使用多线程从文件中读取数据,然后使用加密算法对数据进行加密。随后,我们会将加密后的数据写入到另一个文件中。最后,我们还会使用多线程从加密后的文件中读取数据,并对数据进行解密,将解密后的数据写入到另一个文件中。 步骤 步骤…

    Java 2023年5月20日
    00
  • SpringBoot部署xxl-job方法详细讲解

    SpringBoot部署xxl-job方法详细讲解 1. 简介 xxl-job是一款分布式定时任务调度平台,支持固定间隔、固定时间以及CRON表达式等多种调度方式,同时也支持多线程、任务追踪、报警监控、在线日志等多种实用功能。而SpringBoot作为目前流行的开发框架之一,为xxl-job的部署提供了便利。 本攻略将详细介绍在SpringBoot应用中如何…

    Java 2023年5月19日
    00
  • maven打包如何指定jdk的版本

    Maven是一个非常流行的Java项目管理和构建工具。在使用Maven进行代码打包时,我们经常遇到需要指定JDK版本的情况。接下来,我将详细介绍在Maven中如何指定JDK版本。 方式一:在pom.xml文件中指定JDK版本 可以在Maven项目的pom.xml文件中指定JDK版本,这样在构建项目时就可以使用特定版本的JDK。可以使用以下示例代码来指定JDK…

    Java 2023年5月19日
    00
  • SpringBoot在Controller层接收参数的n种姿势(超详细)

    下面我来详细讲解“SpringBoot在Controller层接收参数的n种姿势(超详细)”的完整攻略。 1. query参数 1.1 注解@RequestParam @RequestParam 注解是用来从request中获取指定参数值的,它具有以下属性: value:参数别名。如 value=”myParam” 表示 request 中的参数名字是 my…

    Java 2023年5月19日
    00
  • Java中的异常处理如何提高程序可读性?

    Java中的异常处理可以提高程序的可读性和可维护性,让程序更加健壮。下面是具体的攻略: 为什么需要异常处理 在Java编程中,我们常常会遇到各种错误和异常的情况,例如空指针、数组越界、文件不存在等等。这些错误和异常都需要被处理,否则就会导致程序崩溃。而异常处理就是为了保证程序在遇到异常时能够正确地响应和处理,从而保证程序的健壮性和可靠性。 异常处理的语法 J…

    Java 2023年4月27日
    00
  • springboot 如何修改默认端口及application.properties常用配置

    修改Spring Boot默认端口和配置文件是很重要的。这里是修改步骤: 修改Spring Boot默认端口 在Spring Boot的默认情况下,它会使用端口8080。如果我们需要更改端口,我们可以通过编辑application.properties文件或application.yml文件进行更改。 application.properties 文件示例 …

    Java 2023年6月15日
    00
  • Java基于jdbc连接mysql数据库操作示例

    下面是Java基于JDBC连接MySQL数据库操作的完整攻略,包含两条示例。 步骤一:准备工作 在开始Java程序连接MySQL数据库之前,需要完成以下几个准备工作: 安装MySQL数据库并创建需要操作的数据库和表 下载并安装Java JDK 下载并安装MySQL Connector/J驱动程序 步骤二:创建数据库连接 请按照以下步骤创建数据库连接: 加载M…

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部