Spring 定时任务定时批处理作业实现?定时批处理作业是J2EE企业应用里很重要的一环,用来在晚间进行财务挂账,数据转存,新闻联播等等操作。?有两种流行Spring定时器配置:Java的Timer类和OpenSymphony的Quartz定时器?两种Spring定时器的实现方式各有优点,可结合具体项目考虑是否采用。两种方式?在JavaEE系统中,我们会经常用到定时任务–比如每天凌晨生成前天报表,每一小时生成汇总数据等等。?方法一:–但时调度控制非常不方便,并且我们需要大量的代码。?方法二:使用Quartz框架无疑是非常好的选择,并且与Spring可以非常方便的集成在Spring里,已经很好的集成了Quartz,简单到像配cron一样,在xml文件里面配一下时间就可以自动执行,不需要写一行代码Quartz?Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的日程序表。Jobs可以做成标准的Java组件或EJBs。?Quartz官方:rtz/ 简单触发器和复杂触发器?SimpleTrigger为需要简单打火调度而设计–如果你需要在给定的时间和重复次数或者两次打火之间等待的秒数打火一个作业?cronTrigger基于Calendar-like调度的基于Unix克隆表达式–如果你有许多复杂的作业调度?如:当你需要在除星期六和星期天外的每天上午10点半执行作业时?0 15 10 ? * MON-FRI 表示将在星期一到星期五的每天上午10点15分执行一个作业?0 15 10 ? * 6L 2002-2005 表示将在2002年到2005年每个月的最后一个星期五上午10点15分执行作业cron字段允许值允许的特殊字符?秒0-59 , - * / ?分0-59 , - * / ?小时0-23 , - * / ?日期1-31 , - * / L W C ?月份1-12 或者JAN-DEC , - * / ?星期1-7 或者SUN-SAT , - * / L C # ?年(可选)留空, 1970-2099 ,- * /cronExpressionvalue中的内容:<property name="cronExpression"> <value> 50 59 23 ? * 1</value> </property>?第1位:50代表秒?第2位:59代表分钟?第3位:23代表23点,注意:采用24小时?第4位:?代表也没有具体到某日的星期天?第5位:*代表所有月的星期天?第6位: 1代表星期天国外星期天才是每周的开始!特殊字符, - * /“,”字符被用来指定另外的值。如:“MON,WED,FRI”在星期域里表示”星期一、星期三、星期五”. “-”字符被用来指定一个范围。如:“10-12”在小时域意味着“10点、11点、12点”。“*”字符被用来指定所有的值。如:”*“在分钟的字段域里表示“每分钟”“/”字符秒字段中”5/15 ”表示从第5秒开始每15秒执行一次“0/5”每5秒执行一次特殊字符“?”字符只在日期域和星期域中使用。它被用来指定“非明确的值”。问号表示这个字段不包含具体值。比如:如果指定月内日期,可以在周内日期字段中插入“?”表示周内日期值无关紧要因为日期和周这两个元素是互斥的,因此应该通过设置一个问号(?) 来表明不想设置的那个字段“L”字符指定在月或者星期中的某天(最后一天)即“Last ”的缩写。但是在星期和月中“L”表示不同的意思如:*在月子段中“L”指月份的最后一天:lL(1月31日)2L(2月28日)*在星期字段中则简单的表示为“7”或者“SAT”星期六。*如果在星期字段中在某个value值得后面则表示“某月的最后一个星期value”如“6L”表示某月的最后一个星期五。 (注:国外星期天才是每周的开始1代表星期天)“#”字符只能用在星期字段,该字段指定了第几个星期value在某月中给定月份指定具体的工作日实例。把“MON#2”放在周内日期字段中,表示把任务安排在当月的第二个星期一。特殊字符“W”字符能用在日期字段中,该字段指定了离指定日期最近的那个工作日(周一到周五)比如你将“日”字段设为“15W”意为:离该月15号最近的工作日因此:如果15号为周六,触发器会在14号即周五调用。如果15号为周日, 触发器会在16号也就是周
Spring定时任务 来自淘豆网m.daumloan.com转载请标明出处.