Spring+Quartz实现定时任务的配置方法(插曲)

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/46376093

1、Scheduler的配置

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
       <property name="triggers">
           <list>
              <ref bean="testTrigger"/>
           </list>
       </property>
       <property name="autoStartup" value="true"/>
</bean>  

说明:Scheduler包含一个Trigger列表,每个Trigger表示一个作业。

2、Trigger的配置

<bean id="testTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
       <property name="jobDetail" ref="testJobDetail"/>
       <property name="cronExpression" value="*/1 * * * * ?"/><!-- 每隔1秒钟触发一次 -->
</bean> 

说明:

1)Cron表达式的格式:秒 分 时 日 月 周 年(可选)。

字段名                 允许的值                        允许的特殊字符

秒                         0-59                               , - * /

分                         0-59                               , - * /

小时                   0-23                               , - * /

日                         1-31                               , - * ? / L W C

月                         1-12 or JAN-DEC          , - * /

周几                     1-7 or SUN-SAT            , - * ? / L C #

年 (可选字段)     empty, 1970-2099      , - * /

“?”字符:表示不确定的值

“,”字符:指定数个值

“-”字符:指定一个值的范围

“/”字符:指定一个值的增加幅度。n/m表示从n开始,每次增加m

“L”字符:用在日表示一个月中的最后一天,用在周表示该月最后一个星期X

“W”字符:指定离给定日期最近的工作日(周一到周五)

“#”字符:表示该月第几个周X。6#3表示该月第3个周五

2)Cron表达式范例:

每隔5秒执行一次:*/5 * * * * ?

每隔1分钟执行一次:0 */1 * * * ?

每天23点执行一次:0 0 23 * * ?

每天凌晨1点执行一次:0 0 1 * * ?

每月1号凌晨1点执行一次:0 0 1 1 * ?

每月最后一天23点执行一次:0 0 23 L * ?

每周星期天凌晨1点实行一次:0 0 1 ? * L

在26分、29分、33分执行一次:0 26,29,33 * * * ?

每天的0点、13点、18点、21点都执行一次:0 0 0,13,18,21 * * ?

3、JobDetail的配置

<bean id="testJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <property name="targetObject" ref="testJob"/>
        <property name="targetMethod" value="execute"/>
        <property name="concurrent" value="false"/>
        <!-- 是否允许任务并发执行。当值为false时,表示必须等到前一个线程处理完毕后才再启一个新的线程 -->
</bean>  

4、业务类的配置

 <bean id="testJob" class="com.cjm.web.service.quartz.TestJob"/>

5、业务类源代码

public class TestJob {
    public void execute(){
        try{
              //.......
         }catch(Exception ex){
             ex.printStackTrace();
         }
     }
}  

说明:业务类不需要继承任何父类,也不需要实现任何接口,只是一个普通的java类。

注意:

在Spring配置和Quartz集成内容时,有两点需要注意

1、在<Beans>中不能够设置default-lazy-init="true",否则定时任务不触发,如果不明确指明default-lazy-init的值,默认是false。

2、在<Beans>中不能够设置default-autowire="byName"的属性,否则后台会报org.springframework.beans.factory.BeanCreationException错误,这样就不能通过Bean名称自动注入,必须通过明确引用注入

时间: 2024-11-05 12:28:48

Spring+Quartz实现定时任务的配置方法(插曲)的相关文章

Spring+Quartz实现定时任务的配置方法

1.Scheduler的配置 <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="testTrigger"/> </list> </property> <property name=&q

quartz (二) Spring+Quartz实现定时任务的配置方法

JobDetail  设置执行的任务 :CronTrigger   触发器:设置执行的时间规则      ;  Scheduler    // 调度器,将任务与执行时间关联 本文转自:http://www.oschina.net/question/8676_9032 1.Scheduler的配置 <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property nam

Spring+Quartz实现定时任务的配置步骤

最近用到了Spring的定时任务,做一个笔记记录一下以免自己忘了1.导入Spring的jar包及定时插件包(quartz-1.8.5.jar.slf4j-api-1.5.8.jar.slf4j-log4j12-1.5.6.jar)2.在Springxml配置文件中加入相关配置如下: (1).Scheduler的配置 <bean id="startQuertz" lazy-init="true" autowire="no" class=&qu

Spring+quartz 实现定时任务job集群配置

为什么要有集群定时任务? 因为如果多server都触发相同任务,又同时执行,那在99%的场景都是不适合的.比如银行每晚24:00都要汇总营业额.像下面3台server同时进行汇总,最终计算结果可能是真实结果的3倍,那对银行来说是无法想象的,完全不可接受. 集群定时任务工作原理 所以为了解决以上问题,每个server把将要及正在运行的job所有状态都即时同步到中央数据库,然后再次触发调用时从数据库中分析是否已有别的server正在运行相同job (同名同定时时间点的job属于相当job),如果相同

Spring+Quartz实现定时执行任务的配置

1.要想使用Quartz 必须要引入相关的包:以下是我在项目中gradle中的配置: compile 'org.quartz-scheduler:quartz:2.1.1' 2.Scheduler的配置 <bean id="mockJobSchedule" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="schedule

spring quartz的触发器CrontriggerBean配置

每一个quartz的CronTrigger表达式分为七个子表达式,每个子表达式之间用空号分割,分别是:秒 分 时 日 月 星期 年.其中年不是必须的,所以CronTrigger最少有六个子表达式. 每个子表达式的具体表示如下: 字段名 范围值 必须 特殊字符 秒 0-59 是 -*/ 分 0-59 是 -*/  时 0-23  是 -*/ 日 1-31  是 ,*?/LW  月  1-12 or JAN-DEC  是 -*/  星期的某天 1-7 or SUN-SAT  是 -*?/L#  年

spring quartz 分布式任务计划

通过maven管理的spring mvc工程,且已经成功连接数据库. 数据库表结构 /*Table structure for table `qrtz_calendars` */ DROP TABLE IF EXISTS `qrtz_calendars`; CREATE TABLE `qrtz_calendars` ( `SCHED_NAME` varchar(120) NOT NULL, `CALENDAR_NAME` varchar(200) NOT NULL, `CALENDAR` blo

spring Quartz多个定时任务的配置

Quartz多个定时任务的配置 1,配置文件与spring整合,需要在spring 的总配置中一入或者在web.xml中spring监听中加上 ztc_cp-spring-quartz.xml 注:定时器出触发的时间,根据需要自己设置 [html] view plain copy print? <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springfra

spring框架整合使用定时任务框架java quartz的示例代码配置

原创整理不易,转载请注明出处:spring框架整合使用定时任务框架java quartz的示例代码配置 代码下载地址:http://www.zuidaima.com/share/1775583461723136.htm 有时候我们的任务(Job)需要再某些任务完成之后才能进行:例如从旧的数据库批量导数据的时候:需要现将被其他数据依赖的数据导入新的数据库:然后再进行关系的导入..在这种情况下我们就可以使用Quartz的listener来做文章了. 首先我们写一个主任务的类,命名为MainJob:她