`
kdboy
  • 浏览: 759243 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Quartz与Spring的集成

阅读更多
Quartz与Spring的集成

1、Scheduler入口
	<bean name="quartzScheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="triggers">
           <list>
                <ref bean="cronTrigger"/>
            </list>
        </property>
    </bean>
Quartz.properties文件用于对quartz的详细设置。可选,未设置的情况下将使用jar包中的默认文件。


2、定义Trigger
    <bean id="cronTrigger" class="org.springframework.scheduling.quartz. CronTriggerBean ">
        <property name="jobDetail" ref="jobDetail"/>
        <property name="cronExpression" value="0 0/1 * *,* * ?"/>
    </bean>
除了CronTriggerBean之外,还有SimpleTriggerBean的实现方式,SimpleTrigger的实现类似jdk中的Timer,详细使用方法可以参考文章末尾的参考资料。
相比SimpleTrigger,CronTrigger便显得要强大得多。
CronTrigger表达式配置格式:
参考:http://www.blogjava.net/xmatthew/archive/2009/02/15/253864.html


3、定义Job
    <bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
        <property name="targetObject" ref="myJob"/>
        <property name="targetMethod" value="test"/>
    </bean>
以上定义是使用POJO类直接作为Job来进行调度。当然这里也可以直接使用实现Job接口的类作为作业处理类,这样的实现方式就需要定义JobDetailBean来实现,如:
<bean id="jobDetailBean" class="org.springframework.scheduling.quartz.JobDetailBean">
…….
</bean>
显然,POJO作为Job的实现方式耦合度要更低,使用也更为灵活。

参考资料:
用 Quartz 进行作业调度:http://www.ibm.com/developerworks/cn/java/j-quartz/
Quartz指南:http://wiki.springside.org.cn/display/springside/Quartz
分享到:
评论
1 楼 kdboy 2011-03-10  
关于CronTrigger表达式?和*的区别:

* 可以作用于任意字段,表示指定该字段为任意值。
? 只可以作用于日期和星期两个字段,表示不指定该字段的值。

日期、星期两个字段不能同时指定值(指定为*或具体数值),可以理解为这两个字段相冲突,因此如果指定了其中一个字段的值(包括指定为*),另外一个字段的值必须为 ? 。否则,会产生冲突,出现语法错误。
另外,如果同时指定日期和星期两个字段为?是允许的,相当于一个为*另一个指定为?。

相关推荐

Global site tag (gtag.js) - Google Analytics