天天看点

Spring 计划任务 xml配置

声明XML模式(xsd)文件

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.2.xsd"
           

我用的是spring的3.2版本

组件扫描

<context:component-scan base-package="com.XXX"  />
           

就是要让spring知道初始化的时候要扫描哪些包,你的计划任务需要在包中,否则spring找不到

注入定时任务

<task:annotation-driven/> 
<task:scheduler id="testTask" pool-size="3" />
<task:scheduled-tasks scheduler="testTask">
	<task:scheduled ref="solrTask" method="excute" cron="0/8 * * * * ?" />
</task:scheduled-tasks>
           

参数解释:

annotation-driven 帮助我们完成task的注册

pool-size 调度线程池的大小,调度线程在被调度任务完成前不会空闲

ref 它会告诉Spring 正在装配的是一个bean的引用,这个bean的名字是 solrTask,对应我们定义组件的id

method 需要运行bean中的方法

cron 定义定时任务的启动规则(本例启动为每8秒运行一次)

定时任务类

package com.xxx;

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

import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
@Component("solrTask")
public class SolrTask {

	public void excute() {
		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
		System.out.println("定时测试"+df.format(new Date()));
	}	
}
           

流程说明:运行程序后,spring先进行组件扫描,获取id为solrTask的bean,然后进行定时任务的注入,对定时任务的配置等操作。

运行结果:

Spring 计划任务 xml配置

建议:如果有条件,在进行Spring配置时最好选用JavaConfig进行配置,而不是选择XML配置。第一JavaConfig本就是java程序,会和项目很融合,而且JavaConfig的功能更为强大,配置更为简单而且配置出错率也比较低。XML还是用于维护既有的老项目比适合~~~