Spring 任务调度

本文介绍了Spring的定时任务调度,包括两种触发机制:固定周期运行和指定时间点运行。详细讨论了所需依赖jar包,并解析了Spring配置文件中`<task:scheduled>`的相关参数,如initial-delay、fixed-delay、fixed-rate和cron表达式。此外,还提到了一个Java类和测试类的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 触发机制
定时任务的触发机制一般可分为两种,分别是按固定周期运行和在指定时间点运行。

2. 依赖 jar
commons-logging-1.1.3.jar
spring-beans-3.2.3.RELEASE.jar
spring-context-3.2.3.RELEASE.jar
spring-core-3.2.3.RELEASE.jar
spring-expression-3.2.3.RELEASE.jar
# download url
http://repo.spring.io/release/org/springframework/spring/   
http://docs.spring.io/spring/docs/current/spring-framework-reference/html/overview.html  
https://dist.apache.org/repos/dist/release/commons/logging/binaries/ 

3. 一个 Java 类

package org.demo.task;

import java.util.Date;

public class HeartBeatTask
{
    /**
     * 检测心跳
     */
    public void run()
    {
        String time = new Date().toString();
        System.out.println("[" + time + "] alive.");
    }
}

4. Spring 配置文件 src/spring-tasks.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:task="http://www.springframework.org/schema/task"
    xsi:schemaLocation="
       http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/task
       http://www.springframework.org/schema/task/spring-task-3.2.xsd" >
    
    <!-- bean definition -->
    <bean id="heartBeat" class="org.demo.task.HeartBeatTask" />
    
    <!-- task definition -->
    <task:scheduler id="myScheduler" pool-size="10" />
    <task:scheduled-tasks scheduler="myScheduler">
        <task:scheduled ref="heartBeat" method="run" initial-delay="10000" fixed-delay="5000" />
    </task:scheduled-tasks>
    
</beans>

# <task:scheduled> 的参数说明如下:
initial-delay :  表示第一次运行前需要延迟的时间,单位是毫秒
fixed-delay  :  表示从上一个任务完成到下一个任务开始的间隔, 单位是毫秒
fixed-rate    :  表示从上一个任务开始到下一个任务开始的间隔, 单位是毫秒(如果某次任务开始时上次任务还没有结束,那么在上次任务执行完成时,当前任务会立即执行)
cron           :  cron 表达式,由6个字段组成,依次为 second, minute, hour, day, month, weekday  例如:
                 "0 0 * * * *"                     = the top of every hour of every day.
                 "*/10 * * * * *"                 = every ten seconds.(在 0, 10, 20, 30, 40, 50 秒时运行)
                 "0 0 8-10 * * *"               = 8, 9 and 10 o'clock of every day.
                 "0 0/30 8-10 * * *"          = 8:00, 8:30, 9:00, 9:30, 10:00 and 10:30 o'clock every day.
                 "0 0 9-17 * * MON-FRI" = on the hour nine-to-five weekdays
                 "0 0 0 25 12 ?"              = every Christmas Day at midnight

5. 一个测试类

public static void main(String[] args)
{
    AbstractApplicationContext ctx = new ClassPathXmlApplicationContext("spring-tasks.xml");
    System.out.println("context is " + ctx);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值