springTask

一.spring Task 简介

spring 3.0以后自带了task调度工具

二.环境准备

1.jar包

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-context</artifactId>
  <version>4.3.7.RELEASE</version>
</dependency>

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-web</artifactId>
  <version>4.3.7.RELEASE</version>
</dependency>

三.spring Task XML配置方式开发

1.实现一个简单的定时任务

  • 实现业务功能
package com.neusoft.service.impl;

import com.neusoft.service.TaskService;
import org.springframework.stereotype.Component;
import java.util.Date;

@Component
public class TaskServiceImpl implements TaskService {

    @Override
    public void firstTask() {
        System.out.println(new Date() + "这是第一个定时任务");
    }

    @Override
    public void secondTask() {
        System.out.println(new Date() + "这是第二个定时任务");
    }
}
  • 配置定时任务
    在spring配置文件 applicationContext.xml 中 增加如下内容,同时还要增加 task 约束
<!-- 配置定时规则 -->
<task:scheduled-tasks>
    <!--
         可以配置多个定时任务
         ref:指定 要执行的 方法在哪个bean中
         method:指定 要执行的方法
         initial-delay:设置web服务器启动后,要等多少毫秒开始执行定时任务
         fixed-delay:设定每隔多少毫秒执行一次定时任务
     -->
    <task:scheduled ref="taskServiceImpl" method="firstTask" initial-delay="1000" fixed-delay="1000" />
    <task:scheduled ref="taskServiceImpl" method="secondTask" initial-delay="2000" fixed-delay="3000"/>
</task:scheduled-tasks>

2.实现一个复杂的定时任务

(1)cron表达式

cron表达式是一个字符串,用来定义复杂的定时规则,由七部分组成,每部分中间用空格隔开
corn从左到右(用空格隔开):秒 分 小时 月份中的日期 月份 星期中的日期 年份

(2)各字段的含义

在这里插入图片描述

(3)另外,cron表达式还可以包含一些特殊符号来定义更加灵活的定时规则

在这里插入图片描述

(4)demo

spring配置文件 applicationContext.xml

<!-- 配置定时规则 -->
<task:scheduled-tasks>
    <!--
         可以配置多个定时任务
         ref:指定 要执行的 方法在哪个bean中
         method:指定 要执行的方法
         initial-delay:设置web服务器启动后,要等多少毫秒开始执行定时任务
         fixed-delay:设定每隔多少毫秒执行一次定时任务
         cron:指定cron表达式
     -->
    <task:scheduled ref="taskServiceImpl" method="firstTask" cron="*/5 * * * * ?"/>
    <task:scheduled ref="taskServiceImpl" method="secondTask" cron="0 23 16 * * ?"/>
</task:scheduled-tasks>

四.spring Task 全注解方式开发

1.applicationContext.xml 配置
<context:component-scan base-package="com.neusoft"/>

<!--开启对 @Scheduled 注解的支持-->
<task:annotation-driven/>
2.定时任务类中添加注解
package com.neusoft.service.impl;

import com.neusoft.service.TaskService;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.Date;

@Component
public class TaskServiceImpl implements TaskService {

    /**
     *     在方法上加 @Scheduled 注解
     *     initial-delay:设置web服务器启动后,要等多少毫秒开始执行定时任务
     *     fixed-delay:设定每隔多少毫秒执行一次定时任务
     *     cron:指定cron表达式
     */

    @Scheduled(initialDelay = 1000, fixedDelay = 1000)
    @Override
    public void firstTask() {
        System.out.println(new Date() + "这是第一个定时任务");
    }

    @Override
    public void secondTask() {
        System.out.println(new Date() + "这是第二个定时任务");
    }
}
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值