SpringTask

2017-08-01  本文已影响17人  w_nanan

项目有定时任务的需求,对比了Timer、Quartz和SpringTask之后使用了SpringTask来配置定时任务。理由很简单,就是简单!在Spring下简单的一个Xml配置文件或者是注解就能完成功能。

定时的任务是定时通过百度API获取某企业的股票价格..

项目现状:

  1. 项目开启了注解
  2. 调用接口类通过xml配置纳入Spring进行管理
  3. 定时任务暂时使用SpringTask
package com.xxx.oil.task;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;

import com.xxx.oil.service.OilService;
import com.xxx.oil.service.StockService;

/**
 * 定时任务使用,已注册在conf/plugin/task/context-task.xml
 */
public class SipcTimerTask {
    private static final Logger logger = LoggerFactory.getLogger(SipcTimerTask.class);

    public SipcTimerTask() {

    }
    /**
      * 获取石化股价
      */
    public void saveStockTask() {
        service.saveStock();
    }

    /**
     * 获取原油价格
     */
    public void saveOilPriceTask() {
        try {
            oilService.setBrentOil();
        } catch (IOException e) {
            logger.error("定时任务出错:获取布伦特原油价格出错!");
            e.printStackTrace();
        }
        try {
            oilService.setNYOil();
        } catch (IOException e) {
            logger.error("定时任务出错:获取布伦特原油价格出错!");
            e.printStackTrace();
        }
    }

    @Autowired
    private StockService service;
    @Autowired
    private OilService oilService;
}
<?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:util="http://www.springframework.org/schema/util"
    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/util http://www.springframework.org/schema/util/spring-util.xsd
        http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd">

    <!-- 获取石化股票和原油价格等信息定时任务 -->
    <bean id="sipcTimerTask" class="com.xxx.oil.task.SipcTimerTask"/>
    
    <task:scheduled-tasks>
        <!-- cron值编写
            1.cron共有6个必选和1个可选域,分别是(秒,分,时,日期,月份,星期,年(可选域))
            2.cron允许的值,
                秒(0-59),分(0-59),时(0-12),日期(1-31),月份(1-12或者JAN-DEC),星期(1-7或者SUN-SAT),年( 留空或者 1970-2099 )
            3.cron允许的连接字符,(- * / )这三个基本上都有,(?)只有日期和星期使用,解决两个域使用时值冲突的问题,日期和星期只用一种
                ( L C )只在日期星期使用,L月的最后一天,C指定一个日历,(W)只在日期中使用,表示工作日,(#)只在星期中使用,表示指定具体星期例如(3#2)本月第二个星期的周二(3表示周二)
            4.(- * /)-表示between..and..,*表示per,/表示增量,例如(在分钟域0 0-5 12 * * ?)表示每天的12:00到12:05每分钟触发,在秒域0/15表示每分钟0,15,30,45触发
         -->
        <task:scheduled ref="sipcTimerTask" method="saveStockTask" cron="0 0/15 9-16 ? * 1-5" />
        <!-- 每15分钟更新一次 -->
        <task:scheduled ref="sipcTimerTask" method="saveOilPriceTask" cron="0 0/15 * ? * 1-7" />
    </task:scheduled-tasks>


</beans>
上一篇 下一篇

猜你喜欢

热点阅读