Spring Boot使用Schedule实现定时任务的方法

下面是详细的“Spring Boot使用Schedule实现定时任务的方法”的攻略:

一、概述

在Spring Boot中,我们可以使用Spring Scheduler实现简单的定时任务。Spring Scheduler是Spring框架中的一个轻量级、基于内存的定时任务框架,可以方便地实现定时任务。在本文中,我们将详细介绍如何在Spring Boot中使用Scheduled任务。

二、步骤

1. 引入Spring Scheduler依赖

在pom.xml文件中添加以下依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context-support</artifactId>
</dependency>

2. 创建定时任务方法

我们需要创建一个方法来执行我们的定时任务。这个方法可以是任何公共方法,但需要使用@Scheduled注解进行标记。@Scheduled注解由Spring Scheduler提供。

@Component
public class MySchedulerTasks {

    private static final Logger logger = LoggerFactory.getLogger(MySchedulerTasks.class);
    private static final SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");

    @Scheduled(fixedRate = 5000)
    public void taskOne() {
        logger.info("Task One is running at " + dateFormat.format(new Date()));
    }

    @Scheduled(cron = "0 0 8 * * ?")
    public void taskTwo() {
        logger.info("Task Two is running at " + dateFormat.format(new Date()));
    }
}

在上面的代码中,我们定义了两个定时任务:Task One和Task Two。Task One以固定间隔时间运行(每5秒),Task Two以Cron表达式运行(每天早上8点)。

3. 启用Schedule任务

为了启用Scheduled任务,我们需要添加@EnableScheduling注解:

@SpringBootApplication
@EnableScheduling
public class DemoApplication {

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

4. 运行应用程序

现在我们可以运行应用程序并看到定时任务在后台运行。

三、示例

示例1:在Spring Boot中使用Scheduled任务打印简单日志

在本例中,我们将创建两个简单的定时任务,在不同的时间间隔打印日志。我们将使用@Scheduled注解来指定任务应该在何时运行,使用Logger来输出日志。

1.创建一个新的Spring Boot项目,并在pom.xml文件中添加必要的依赖项,如下所示:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context-support</artifactId>
</dependency>

2.创建一个定时任务类:

@Component
public class MyScheduledTasks {

    private static final Logger LOGGER = LoggerFactory.getLogger(MyScheduledTasks.class);

    @Scheduled(fixedRate = 5000)
    public void logOne() {
        LOGGER.info("Task One is running at " + new Date());
    }

    @Scheduled(fixedRate = 3000)
    public void logTwo() {
        LOGGER.info("Task Two is running at " + new Date());
    }
}

在上面的代码中,我们定义了两个简单的定时任务,分别是Task One和Task Two。 Task One每5秒打印一次日志,Task Two每3秒打印一次日志。

3.启用定时任务

要启用Scheduled任务,我们需要使用@EnableScheduling注解:

@SpringBootApplication
@EnableScheduling
public class DemoApplication {

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

4.运行应用程序

运行应用程序并在日志文件中查看输出,您将看到定时任务正在运行。

示例2:在Spring Boot中使用Scheduled任务向数据库中插入数据

在本例中,我们将创建一个定时任务,在指定的时间间隔内将数据插入到数据库中。我们将使用Spring Data JPA来访问数据库。

1.创建一个新的Spring Boot项目,并在pom.xml文件中添加必要的依赖项,譬如:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>

2.创建一个数据模型

@Entity
@Table(name = "users")
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String name;

    private String email;

    //getters and setters,  constructors, equals and toString methods
}
  1. 创建一个定时任务类:
@Component
public class AddUsersScheduledTasks {

    private static final Logger LOGGER = LoggerFactory.getLogger(AddUsersScheduledTasks.class);

    private final UserRepository userRepository;

    public AddUsersScheduledTasks(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    @Scheduled(cron = "0 0/5 * * * ?")
    public void addUser() {
        LOGGER.info("Adding a new user");
        User user = new User();
        user.setName("Name" + Math.random());
        user.setEmail("email" + Math.random() + "@example.com");
        userRepository.save(user);
    }
}

在上面的代码中,我们定义了一个名为addUser()的定时任务。此任务将每5分钟运行一次,插入一个新的用户对象到数据库中。

4.启用定时任务

要启用Scheduled任务,我们需要使用@EnableScheduling注解:

@SpringBootApplication
@EnableScheduling
public class DemoApplication {

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

5.配置数据库连接

我们需要在application.properties文件中添加数据库连接和映射:

spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver

6.运行应用程序

运行示例并进入MySQL命令提示符,输入以下命令来访问插入数据库的数据:

SELECT * FROM stutest.users;

您将在结果集中看到新插入的用户。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Spring Boot使用Schedule实现定时任务的方法 - Python技术站

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

相关文章

  • Java解析XML(4种方式)案例详解

    Java解析XML(4种方式)案例详解 1. Java解析XML的概念 在Java开发中,我们经常需要读取和修改一些XML格式的文件。XML全称为Extensible Markup Language(可扩展标记语言),是W3C组织推出的标记语言。 XML是一种纯文本格式,用来描述数据。它通过标签的方式来组织数据,标签包含了属性和值,这些在XML文件中都可以很…

    Java 2023年5月19日
    00
  • springboot整合shardingjdbc实现分库分表最简单demo

    下面是一份完整的SpringBoot整合ShardingJDBC实现分库分表最简单demo的攻略: 一、前置条件 掌握SpringBoot和Maven的基础及配置方式; 了解什么是ShardingJDBC以及其分库分表的实现原理; 准备好使用的数据库及其账号密码。 二、添加依赖 在Maven的pom.xml文件中添加以下依赖: <dependency&…

    Java 2023年5月20日
    00
  • JetCache 缓存框架的使用及源码解析(推荐)

    JetCache 缓存框架的使用及源码解析(推荐) 简介 JetCache 是一个基于 Java 语言的高性能缓存框架,具备很高的灵活性和扩展性,可以支持 Redis、Memory、Lru、Caffeine、Tair 等缓存模式。JetCache 提供了基于注解的缓存操作方式,也提供了编程式的缓存操作方式,使用起来非常简单。 安装 在 pom.xml 文件中…

    Java 2023年5月20日
    00
  • Spring Boot JDBC 连接数据库示例

    介绍一下”Spring Boot JDBC 连接数据库示例”的完整攻略。 1. 环境准备 首先,我们需要准备JDK和Maven环境。确保已安装JDK环境,可以在命令行终端中输入以下命令进行验证: java -version 验证通过后,下载和安装Maven。同样在终端中输入以下命令进行验证: mvn -v 验证通过后,环境准备工作就做完了。 2. 添加依赖 …

    Java 2023年5月19日
    00
  • Java 集合框架之List 的使用(附小游戏练习)

    Java 集合框架之 List 的使用 List的概念介绍 在Java的集合框架中,List是其中一个非常重要和常用的容器类。它可以存储有序、可重复的数据集合,并且允许对其中的元素进行增删改查等操作,非常方便。List可以通过下标/索引的方式访问其中的元素,也可以通过迭代器对其中的元素进行遍历。 常用的List实现类有:ArrayList、LinkedLis…

    Java 2023年5月26日
    00
  • Java程序开发环境配置图文教程

    下面我将为您讲解“Java程序开发环境配置图文教程”的完整攻略。 环境要求 在开始配置Java程序开发环境前,请确保您的电脑已经安装好了以下环境: 操作系统:Windows/macOS/Linux Java开发工具包(Java Development Kit,简称JDK) 集成开发环境(Integrated Development Environment,简…

    Java 2023年5月23日
    00
  • Java(JDK/Tomcat/Maven)运行环境配置及工具(idea/eclipse)安装详细教程

    Java运行环境配置教程 Java安装 下载JDK安装包,选择与自己操作系统相匹配的版本 双击安装包,根据提示完成安装 打开命令行窗口,输入以下命令查看Java版本是否安装成功 java -version Tomcat安装 下载Tomcat安装包,选择与自己操作系统相匹配的版本 解压缩安装包到指定目录 打开命令行窗口,进入Tomcat的bin目录,并运行st…

    Java 2023年5月19日
    00
  • spring boot如何基于JWT实现单点登录详解

    这里是关于如何基于JWT实现Spring Boot单点登录的攻略: 什么是JWT JWT(JSON Web Token),是一种用于身份验证的标准。它由三部分组成:Header(头部)、Payload(负载)和Signature(签名)。 Header部分一般用于描述Token的类型和 signature使用的算法,例如: { "alg"…

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