關於spring 定時任務大概有2中 java
從配置上來講 大概分爲2中1中是 在xml中配置 一堆東西,另一種是基於註解的 python
我要說的是關於註解的 第一種從網上能夠看到好多 spring
說一下起因, spring-mvc
個人整個程序是都是基於註解的,最近要加一個新需求是作統計報表的。天天統計一次便可,其實python挺好 惋惜不會,故就使用spring 的定時任務了 mvc
由於在跑任務過程當中用到了dao ,並且個人dao都是基於註解的,因此就整個沿用註解了 ide
先看下類 spa
1接口 component
/***
*
* @author skyyan
*
*/
public interface IStatiticsTask {
public void execute() throws Exception; xml
} 接口
2.實現
package service.impl.task;
import java.util.Date;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
/***
* 統計任務
* @author skyyan
*
*/
@Component("scheduledTaskManager")
public class StatiticsTask implements IStatiticsTask{
@Autowired
private IStatiticsService statiticsService;
private static int cnt=0;
public void excuteJob() throws Exception{
/***
* TODO 替換成本身的邏輯
*/
System.out.println("statiticsService="+statiticsService);
System.out.println("**************************");
System.out.println("-------任務StatiticsTask 開始執行["+(cnt)+"]開始-----------");
String currentDate=ELFunction.getDateDec(new Date(), 1);
System.out.println("currentDate=="+currentDate);
statiticsService.addTotalStatitics(currentDate);
System.out.println("-------任務StatiticsTask 開始執行["+(cnt)+"]結束-----------");
System.out.println("**************************");
cnt++;
}
@Override
// @Scheduled(cron="0 0 1 * * ?")天天凌晨1點
// @Scheduled(cron="0/5 * * * * ?")//每5秒鐘
@Scheduled(cron="0 0 1 * * ?")//天天凌晨1點執行一次;主要在這裏
public void execute() throws Exception {
try {
excuteJob();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
-------------
配置文件
<?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:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc" 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-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-3.0.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-3.0.xsd
"
default-init-method="init" default-autowire="byName">
<!-- 定時開始 --> <task:annotation-driven/> <context:component-scan base-package="service.impl.task"/> <!-- 定時 結束--> </beans>