Spring task 定时任务实践


  需求:

      每天的早上7点定时扫描表里的数据,符合条件的数据将会被发送到相应人员的邮箱当中。

  分析:

      实现定时任务技术上有好多选择:

1· Java自带的java.util.Timer类:这个类允许你调度一个java.util.TimerTask任务。使用这种方式可以让你的程序按照某一个频度执行,但不能在指定时间运行。一般用的较少。

2.使用Quartz,这是一个功能比较强大的的调度器,可以让你的程序在指定时间执行,也可以按照某一个频度执行,配置起来稍显复杂,稍后会详细介绍。

3.Spring3.0以后自带的task,可以将它看成一个轻量级的Quartz,而且使用起来比Quartz简单许多,本篇博客主要介绍这种方案。


    本文介绍Spring3.0以后自主开发的定时任务工具,spring task,可以将它比作一个轻量级的Quartz,而且使用起来很简单,除spring相关的包外不需要额外的包。

    另外,springtask支持注解和配置文件两种方式。这里以配置文件方式示例。


步骤:第一步:配置spring配置文件:

首先,命名空间需要添加有关内容:

 <beans xmlns="http://www.springframework.org/schema/beans"  
    xmlns:task="http://www.springframework.org/schema/task"    
    。。。。。。   
    xsi:schemaLocation="http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd">

   其次,配置文件中设置具体的任务:

<task:scheduled-tasks>
   <task:scheduled ref="taskJob" method="job1" cron="0 * * * * ?"/>
   <!--<task:scheduled ref="taskJob" method="job1" cron="0 0 7 * * ?"/>-->
</task:scheduled-tasks>

    说明:ref参数指定的即任务类,method指定的即需要运行的方法,croncr即onExpression表达式,具体写法这里不介绍了,详情见附录。<context:component-scan base-package="com.gy.mytask" />。


    第二步:编写需要执行任务的类:

package com.bms.service;/**
 * Created by 贾丽敏 on 2017/5/22.
 */
import com.bms.mapper.TbOrderMapper;
import com.bms.pojo.TbOrderEmail;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
/**
* 
* @author 
* @create 2017-05-22 20:11
**/
@Service
public class TaskJob {
@Autowired
    private TbOrderMapper tbOrderMapper;
@Autowired
    private SendMail sendMail;
public void job1(){
        try {
            List<TbOrderEmail> orderEmailList =getOrderEmail();//封装的具体执行任务的代码
            for (TbOrderEmail orderEmail:orderEmailList){
                sendMail.sendMail(orderEmail);
            }
            System.out.println("发送邮件成功");
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}

    大致内容就这么多,还有一种注解方式,原理一样,大家也可以尝试一下。




评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值