Spring邮件抽象层和Spring中的定时调度的整合(三)

二.Spring的定时调度

Spring的定时调度有两种:

1.  使用OpenSymphony Quartz 调度器

2.  使用JDK Timer支持类



1.  使用OpenSymphony Quartz 调度器

Quartz调度器有两种:1. 使用JobDetailBean

                               2. 使用MethodInvokingJobDetailFactoryBean

把两种全写在一起:

例子:

1)  配置QuartzTimer.xml

WEB-INF/conf/QuartzTimer.xml

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"

"http://www.springframework.org/dtd/spring-beans.dtd">

<beans>



<!-- JobDetail 对象保存运行一个任务所需的全部信息 -->

<bean name="exampleJob" class="org.springframework.scheduling.quartz.JobDetailBean">

  <property name="jobClass" value="example.ExampleJob" />

  <property name="jobDataAsMap">

    <map>

      <entry key="timeout" value="5" />

    </map>

  </property>

</bean>





<!-- 通常情况下,你只需要调用特定对象上的一个方法即可实现任务调度 -->

<bean name="exampleBusinessObject" class="example.ExampleBusinessObject" >

<property name="simplesender" ref="simplesender" />

<property name="ordermanager" ref="ordermanager" />

</bean>



<bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">

<!-- MethodInvokingJobDetailFactoryBean引的方法为方法调用工作详细工厂BEAN -->

  <property name="targetObject" ref="exampleBusinessObject" /><!-- 指定要执行的对象 -->

  <property name="targetMethod" value="doIt" /> <!-- 指定要执行对象中的方法 -->

</bean>





<!-- 调度这些jobs,需要使用triggers ,Spring提供两个子类triggers,分别为CronTriggerBean和SimpleTriggerBean-->

<!—simpleTrigger 设置隔多久就重复执行-->

<bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">

    <!-- see the example of method invoking job above -->

    <property name="jobDetail" ref="jobDetail" />

    <!-- 初始化时间为10秒 -->

    <property name="startDelay" value="10000" />

    <!-- 每50秒重复一次 -->

    <property name="repeatInterval" value="20000" />

</bean>

<!—cronTrigger 设置某天某时某秒起动-->

<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">

    <property name="jobDetail" ref="exampleJob" />

    <!-- run every morning at 6 AM -->

    <property name="cronExpression" value="0 31 11 * * ?" />

</bean>





<!-- 我们创建了两个triggers,其中一个开始延迟10秒以后每50秒运行一次,另一个每天早上6点钟运行。

                            我们需要创建一个SchedulerFactoryBean来最终实现一切 -->

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">

    <property name="triggers">

        <list>

          <ref bean="cronTrigger" />

      

            <ref bean="simpleTrigger" />

        </list>

    </property>

</bean>

</beans>

2)配置web.xml



       <context-param>

        <param-name>contextConfigLocation</param-name>

        <param-value>

            <!--WEB-INF/dataAccessContext.xml,-->

            WEB-INF/conf/applicationContext.xml,

            WEB-INF/conf/MailSender.xml,

           WEB-INF/conf/QuartzTimer.xml

        </param-value>

    </context-param>

你可能感兴趣的:(spring,xml,Web,bean,quartz)