首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

使用SimpleTriggerBean 只能作简单的Job 与Job 之间执行的周期(Period)指定,如果要直接作时间点的指定,则可以使用org.spring- framework.scheduling. quartz.CronTriggerBean,例如:

QuartzDemo2 beans-config.xml

    </bean>

    <bean id="cronTriggerBean"

           class="org.springframework.scheduling.

→ quartz.CronTriggerBean">

         <property name="jobDetail">

<ref bean="jobDetailBean"/>

         </property>

         <property name="cronExpression">

<value>0 0 19 * * ?</value>

         </property>

     </bean>

    <bean id="schedulerFactoryBean"

          class="org.springframework.scheduling.

→ quartz.SchedulerFactoryBean">

         <property name="triggers">

 <list>

 <ref bean="cronTriggerBean"/>

 </list>

       </property>

    </bean>

 </beans> 

重点在于"cronExpression" 属性的指定,指定的格式是至少六个时间元素,最多七个时间元素,例如上面的指定是每天的19 时要执行Job 一次,"cronExpression" 属性指定的格式如下:

u        秒(0-59)

u        分(0-59)

u        小时(0-23)

u        每月第几天(1-31)

u        月(1-12 或JAN-DEC)

u        每星期第几天(1-7 或SUN-SAT)

u        年(1970-2099)

其中“每月第几天”与“每星期第几天”是互斥的,两个只能设定一个,不设定的以“?”符号编写,如果有好几个时间点,可以使用“,”符号,例如:“0 0 10,12,14 * * ? ”表示每天的10 时、12 时、14 时要执行Job;对于连续的时间可以使用 -符号,例如“0 0 10,12,14 1-15 * ? ”表示每月的1 到15 日每10 时、12 时、14 时要执行Job,时间格式中的年指定可有可无,例如:“0 0 10,12,14 ? * MON 2006 ”表示2006 年每星期一的10 时、12 时、14 时要执行Job。

9.3.4 使用MethodInvokingJobDetailFactoryBean

如果使用Spring 的话,并不一定要继承QuartzJobBean 类来定义一个Job 类,Spring 提供org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean,可以直接指定执行某个对象的方法,例如改写一下QuartzDemo 项目中的DemoJob 类:

QuartzDemo3 DemoJob.java

接着要在Bean 定义文件中使用MethodInvokingJobDetailFactoryBean即可,例如改写一下QuartzDemo项目中的beans-config.xml:

QuartzDemo3 beans-config.xml

在上面的指定中,每天的18 时30 分都会执行指定的任务,在底层,MethodInvokingJobDetailFactoryBean会自动建立JobDetail 的实例,以执行目标对象的指定方法。