此内容基于Spring 3.0.5 版本运行,参考文档为spring-framework-reference-3.0.5.pdf
在spring3 中的task 命名空间。可以部分去取代 quartz,并且支持注解方式。但是如果使用更加复杂的任务调度。还是建议是使用quartz。以下就使用 task 和 quartz来进行任务调度的方法进行距离。
?使用 注解来 来调度任务
编写一个任务实例。
view plaincopy to clipboard
01./***********************************************************************
02.  *
03.  *  TestJob.java
04.  *
05.  *  ****所有,
06.  *  受到法律的保护,任何公司或个人,未经授权不得擅自拷贝。
07.  *  @copyright      Copyright:  2000-2011 
08.  *  @creator          徐泽宇 <br/>
09.  *  @create-time  2011-6-27  下午11:51:16
10.  *  @revision        $Id:    *
11.  ***********************************************************************/ 
12.package com.alcor.aerie.quartz; 
13.import org.slf4j.Logger; 
14.import org.slf4j.LoggerFactory; 
15.import org.springframework.scheduling.annotation.Scheduled; 
16.import org.springframework.stereotype.Service; 
spring framework组件17.@Service 
18.public class TestJob { 
19.    /**
20.    * Logger for this class
21.    */ 
22.    private static final Logger logger = Logger(TestJob.class); 
23.    @Scheduled(fixedDelay = 1000) 
24.    public void work() 
25.    { 
26.        if (logger.isDebugEnabled()) { 
27.            logger.debug("work() - start"); //$NON-NLS-1$ 
28.        } 
29.        logger.info("Spring Quartz的TestJob任务被调用!"); 
30.        if (logger.isDebugEnabled()) { 
31.            logger.debug("work() - end"); //$NON-NLS-1$ 
32.        } 
33.    } 
34.} 
注意其中的@Scheduled 标签
配置spring的l
view plaincopy to clipboard
01.<?xml version="1.0" encoding="UTF-8"?> 
02.<beans xmlns="/schema/beans" xmlns:xsi="/2001/XMLSchema-instance" 
03.    xmlns:context="/schema/context" 
04.    xmlns:task="/schema/task" 
05.    xsi:schemaLocation="/schema/beans 
06.        /schema/beans/spring-beans-3.0.xsd 
07.        /schema/fex 
08.        /schema/fex/spring-fex-1.5.xsd 
09.        /schema/task 
10.        /schema/task/spring-task-3.0.xsd 
11.        /schema/context 
12.        /schema/context/spring-context-3.0.xsd"> 
13.     
14.    <!--  定时器开关  开始--> 
15.    <task:annotation-driven/> 
16.    <!--  定时器开关  结束--> 
17.     
18.</beans> 
注意:其中xmlns里面加
入 :  xmlns:task="/schema/task" 。在 xsi:schemaLocation中加入  /schema/task        /schema/task/spring-task-3.0.xsd。在配置中加入
<!--  定时器开关  开始-->
<task:annotation-driven/>
<!--  定时器开关  结束-->
如果开发的是web应用,那么在l里面加入
<listener>
<listener-class>org.t.ContextLoaderListener</listener-class>
</listener>
就可以在context启动的时候,自动扫描和装备这个被调度的任务。
?不使用注解,而通过配置来调度任务
编写一个任务实例
view plaincopy to clipboard
/***********************************************************************
*
*  TestJob.java
*
*  ****所有,
*  受到法律的保护,任何公司或个人,未经授权不得擅自拷贝。
*  @copyright      Copyright:  2000-2011 
*  @creator          徐泽宇 <br/>
*  @create-time  2011-6-27  下午11:51:16
*  @revision        $Id:    *
***********************************************************************/ 
package com.alcor.aerie.quartz; 
import org.slf4j.Logger; 
import org.slf4j.LoggerFactory; 
import org.springframework.scheduling.annotation.Scheduled; 
import org.springframework.stereotype.Service; 
@Service 
public class TestJob { 
/**
* Logger for this class
*/ 
private static final Logger logger = Logger(TestJob.class); 
public void work() 
if (logger.isDebugEnabled()) { 
logger.debug("work() - start"); //$NON-NLS-1$ 
logger.info("Spring Quartz的TestJob任务被调用!"); 
if (logger.isDebugEnabled()) { 
logger.debug("work() - end"); //$NON-NLS-1$ 
注意:这里work方法上没有@Scheduled注解了
在l中加入调度方法
view plaincopy to clipboard
<task:scheduled-tasks> 
<task:scheduled ref="testJob" method="work" cron="1/3 * 2-23 * * ?"/> 
</task:scheduled-tasks> 

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。