Maven 项目中Spring Task 的简单配置和快速入门

一、Spring Task简介

Spring Task 是 Spring 框架提供的一个轻量级任务调度功能,用于简化任务的异步执行和定时任务的配置。它基于 Spring 的任务执行框架(TaskExecutor)和任务调度框架(TaskScheduler),允许开发者通过注解或配置文件的方式定义任务,并灵活地控制任务的执行。

二、Maven基础配置 
  1. 导入maven坐标
    Spring Task并没有单独的jar包,它被集成于spring-context下,而spring-context可以通过spring-boot-starter进行依赖传递,所以一般的,我们不需要专门导入,如果需要则按以下模式导入。

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring-context}</version>
        <!-- ${spring-context}   替换为合适版本或直接省略version标签由父依赖决定   -->
    </dependency>
  2. 启动类添加注解

    @EnableScheduling  //开启任务调度
 三、自定义定时任务类
  1. 核心注解
    @Scheduled:用于定义定时任务,可以指定任务的执行周期。
    @Scheduled(fixedRate = 5000) // 每5秒执行一次
    public void fixedRateJob() {
        System.out.println("Fixed Rate Job");
    }
    
    @Scheduled(cron = "0 0/30 * * * ?") // 每半小时执行一次
    public void cronJob() {
        System.out.println("Cron Job");
    }

    fixedRate:指定任务的执行频率,单位为毫秒,用法比较单一。
    cron表达式的字段含义
    秒(0-59) 分(0-59) 小时(0-23) 日期(1-31) 月份(1-12 或 JAN-DEC)
    星期几(0-7 或 SUN-SAT,其中 0 和 7 都表示周日) 年份(可选字段)
    用法灵活,相对复杂,可直接通过chatgpt或其他工具生成Cron - 在线Cron表达式生成器


     

  2. @Async:用于定义异步任务,可以让方法在单独的线程中执行。

    @Async
    public void asyncJob() {
        System.out.println("Async Job");
    }
  3. 在Spring Boot项目中写一个简单的自定义定时任务类

    import lombok.extern.slf4j.Slf4j;
    import org.springframework.scheduling.annotation.Scheduled;
    import org.springframework.stereotype.Component;
    
    import java.util.Date;
    
    /**
     * 自定义定时任务类
     */
    @Component//交给IOC容器
    @Slf4j
    public class MyTask {
        /**
         * 每隔五秒运行一次
         */
        @Scheduled(cron = "0/5 * * * * ?")
        public void executeTask(){
            log.info("定时任务开始执行:{}",new Date());
        }
    }

    需要注意的是@Scheduled 注解被用于定义一个定时任务,而 @Component 注解将 MyTask 类注册为一个 Spring Bean,交由 Spring 容器管理。Spring 的任务调度机制会自动扫描带有 @Scheduled 注解的方法,并按照指定的 Cron 表达式执行这些方法。因此,不需要手动调用 executeTask() 方法,Spring 会自动触发它。

基于上述描述,我们可以在所定义的方法内设置一些需要的业务操作,以达到定时任务的目的。



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值