您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > spring3中使用注解的方式来进行任务调度
spring3中使用注解的方式来进行任务调度。分类:spring2011-06-2817:19630人阅读评论(1)收藏举报以上内容基于Spring3.0.5版本运行,参考文档为spring-framework-reference-3.0.5.pdf在spring3中的task命名空间。可以部分去取代quartz,并且支持注解方式。但是如果使用更加复杂的任务调度。还是建议是使用quartz。以下就使用task和quartz来进行任务调度的方法进行距离。使用注解来来调度任务编写一个任务实例。viewplaincopytoclipboardprint?1./***********************************************************************2.*3.*TestJob.java4.*5.*****所有,6.*受到法律的保护,任何公司或个人,未经授权不得擅自拷贝。7.*@copyrightCopyright:2000-20118.*@creator徐泽宇br/9.*@create-time2011-6-27下午11:51:1610.*@revision$Id:*11.***********************************************************************/12.packagecom.alcor.aerie.quartz;13.importorg.slf4j.Logger;14.importorg.slf4j.LoggerFactory;15.importorg.springframework.scheduling.annotation.Scheduled;16.importorg.springframework.stereotype.Service;17.@Service18.publicclassTestJob{19./**20.*Loggerforthisclass21.*/22.privatestaticfinalLoggerlogger=LoggerFactory.getLogger(TestJob.class);23.@Scheduled(fixedDelay=1000)24.publicvoidwork()25.{26.if(logger.isDebugEnabled()){27.logger.debug(work()-start);//$NON-NLS-1$28.}29.logger.info(SpringQuartz的TestJob任务被调用!);30.if(logger.isDebugEnabled()){31.logger.debug(work()-end);//$NON-NLS-1$32.}33.}34.}注意其中的@Scheduled标签配置spring的ApplicationContext.xmlviewplaincopytoclipboardprint?1.?xmlversion=1.0encoding=UTF-8?2.beansxmlns=:xsi=:context=:task=:schemaLocation=://://://://://://://!--定时器开关开始--15.task:annotation-driven/16.!--定时器开关结束--17.18./beans注意:其中xmlns里面加入:xmlns:task=。在xsi:schemaLocation中加入://。在配置中加入!--定时器开关开始--task:annotation-driven/!--定时器开关结束--如果开发的是web应用,那么在web.xml里面加入listenerlistener-classorg.springframework.web.context.ContextLoaderListener/listener-class/listener就可以在context启动的时候,自动扫描和装备这个被调度的任务。不使用注解,而通过配置来调度任务编写一个任务实例viewplaincopytoclipboardprint?1./***********************************************************************2.*3.*TestJob.java4.*5.*****所有,6.*受到法律的保护,任何公司或个人,未经授权不得擅自拷贝。7.*@copyrightCopyright:2000-20118.*@creator徐泽宇br/9.*@create-time2011-6-27下午11:51:1610.*@revision$Id:*11.***********************************************************************/12.packagecom.alcor.aerie.quartz;13.importorg.slf4j.Logger;14.importorg.slf4j.LoggerFactory;15.importorg.springframework.scheduling.annotation.Scheduled;16.importorg.springframework.stereotype.Service;17.@Service18.publicclassTestJob{19./**20.*Loggerforthisclass21.*/22.privatestaticfinalLoggerlogger=LoggerFactory.getLogger(TestJob.class);23.publicvoidwork()24.{25.if(logger.isDebugEnabled()){26.logger.debug(work()-start);//$NON-NLS-1$27.}28.logger.info(SpringQuartz的TestJob任务被调用!);29.if(logger.isDebugEnabled()){30.logger.debug(work()-end);//$NON-NLS-1$31.}32.}33.}注意:这里work方法上没有@Scheduled注解了在ApplicationContext.xml中加入调度方法viewplaincopytoclipboardprint?1.task:scheduled-tasks2.task:scheduledref=testJobmethod=workcron=1/3*2-23**?/3./task:scheduled-taskscron表达式原文来源于:一个cron表达式有至少6个(也可能7个)有空格分隔的时间元素。按顺序依次为秒(0~59)分钟(0~59)小时(0~23)天(月)(0~31,但是你需要考虑你月的天数)月(0~11)天(星期)(1~71=SUN或SUN,MON,TUE,WED,THU,FRI,SAT)7.年份(1970-2099)其中每个元素可以是一个值(如6),一个连续区间(9-12),一个间隔时间(8-18/4)(/表示每隔4小时),一个列表(1,3,5),通配符。由于月份中的日期和星期中的日期这两个元素互斥的,必须要对其中一个设置?.0010,14,16**?每天上午10点,下午2点,4点00/309-17**?朝九晚五工作时间内每半小时0012?*WED表示每个星期三中午12点0012**?每天中午12点触发01510?**每天上午10:15触发01510**?每天上午10:15触发01510**?*每天上午10:15触发01510**?20052005年的每天上午10:15触发0*14**?在每天下午2点到下午2:59期间的每1分钟触发00/514**?在每天下午2点到下午2:55期间的每5分钟触发00/514,18**?在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发00-514**?在每天下午2点到下午2:05期间的每1分钟触发010,4414?3WED每年三月的星期三的下午2:10和2:44触发01510?*MON-FRI周一至周五的上午10:15触发0151015*?每月15日上午10:15触发01510L*?每月最后一日的上午10:15触发01510?*6L每月的最后一个星期五上午10:15触发01510?*6L2002-20052002年至2005年的每月的最后一个星期五上午10:15触发01510?*6#3每月的第三个星期五上午10:15触发有些子表达式能包含一些范围或列表例如:子表达式(天(星期))可以为“MON-FRI”,“MON,WED,FRI”,“MON-WED,SAT”“*”字符代表所有可能的值因此,“*”在子表达式(月)里表示每个月的含义,“*”在子表达式(天(星期))表示星期的每一天“/”字符用来指定数值的增量例如:在子表达式(分钟)里的“0/15”表示从第0分钟开始,每15分钟在子表达式(分钟)里的“3/20”表示从第3分钟开始,每20分钟(它和“3,23,43”)的含义一样“?”字符仅被用于天(月)和天(星期)两个子表达式,表示不指定值当2个子表达式其中之一被指定了值以后,为了避免冲突,需要将另一个子表达式的值设为“?”“L”字符仅被用于天(月)和天(星期)两个子表达式,它是单词“last”的缩写但是它在两个子表达式里的含义是不同的。在天(月)子表达式中,“L”表示一个月的最后一天在天(星期)自表达式中,“L”表示一个星期的最后一天,也就是SAT如果在“L”前有具体的内容,它就具有其他的含义了例如:“6L”表示这个月的倒数第6天,“FRIL”表示这个月的最一个星期五注意:在使用“L”参数时,不要指定列表或范围,因为这会导致问题
本文标题:spring3中使用注解的方式来进行任务调度
链接地址:https://www.777doc.com/doc-2850067 .html