使用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 的实例,以执行目标对象的指定方法。






