使用 MethodInvokingJobDetailFactoryBean(任务调度框架 其中一种方法)

来源:互联网 发布:优化探究同步导学案 编辑:程序博客网 时间:2024/06/13 11:46


如 果您使用Spring的話,您並不一定要繼承QuartzJobBean類別來定義一個Job類別,Spring提供 org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean, 可以讓您直接指定呼叫某個物件的方法,例如改寫一下 使用 Quartz 的DemoJob類別:
  • DemoJob.java
package onlyfun.caterpillar;public class DemoJob {    private JobData jobData;        public void execute() {        System.out.println(                jobData.getData() + " is executed.");    }        public void setJobData(JobData jobData) {        this.jobData = jobData;    }        public JobData getJobData() {        return jobData;    }} 

接著只要在Bean定義檔中使用MethodInvokingJobDetailFactoryBean即可,例如改寫一下QuartzDemo專案中的beans-config.xml:
  • beans-config.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN"   "http://www.springframework.org/dtd/spring-beans.dtd"> <beans>     <bean id="someData"           class="onlyfun.caterpillar.JobData"/>    <bean id="someJob"           class="onlyfun.caterpillar.DemoJob">                  <property name="jobData">            <ref bean="someData"/>        </property>               </bean>    <bean id="jobDetailBean"           class="org.springframework.scheduling.                   → quartz.MethodInvokingJobDetailFactoryBean">        <property name="targetObject">            <ref bean="someJob"/>        </property>         <property name="targetMethod">            <value>execute</value>        </property>           </bean>    <bean id="cronTriggerBean"           class="org.springframework.scheduling.                   → quartz.CronTriggerBean">        <property name="jobDetail">            <ref bean="jobDetailBean"/>        </property>        <property name="cronExpression">            <value>0 30 18 * * ?</value>        </property>    </bean>        <bean id="schedulerFactoryBean"           class="org.springframework.scheduling.                   → quartz.SchedulerFactoryBean">        <property name="triggers">            <list>                <ref bean="cronTriggerBean"/>            </list>        </property>    </bean></beans>

在上面的指定中,每天的18時30分都會執行指定的任務,在底層,MethodInvokingJobDetailFactoryBean會自動建立JobDetail的實例以呼叫目標物件的指定方法。
0 0
原创粉丝点击