首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

利用Spring按支配计划调用方法

2012-10-21 
利用Spring按调度计划调用方法为了调度报表邮件,你不得不编写EmailReportJob Bean(或者在使用定时器任务的

利用Spring按调度计划调用方法
为了调度报表邮件,你不得不编写EmailReportJob Bean(或者在使用定时器任务的情况下,是EmailReportTask Bean)。但这个Bean只是简单地调用了一次CourseService的sendCourseEnrollmentReport()方法。以这一点而论,EmailReportTask和EmailReportJob看上去都有些空洞。如果你不用写这个额外的类就能指定调用sendCourseEnrollmentReport()方法,是不是很棒?

好消息!你能够不用编写一个单独的TimerTask或QuartzJobBean类就可以调度单次方法调用。要达到这一目的,Spring提供了MethodInvokingTimerTaskFactoryBean和MethodInvokingJobDetailFactoryBean,可以分别使用Java的定时器支持或Quartz调度器对方法调用进行调度。

例如,要使用Java的定时器服务调度一个对sendCourseEnrollmentReport()方法的调用,可以按照以下方式重新声明scheduledReportTask Bean:

<bean id="scheduledReportTask" name="code"><bean id="courseServiceInvokingJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">    <property name="targetObject">        <ref bean="courseService"/>    </property>    <property name="targetMethod">        <value>sendCourseEnrollmentReport</value>    </property></bean>

MethodInvokingJobDetailFactoryBean是Quartz中与MethodInvokingTimerTaskFactoryBean等价的类。在幕后,它是通过创建一个Quartz JobDetail对象来调用一次由targetObject和targetMethod属性指定的对象和方法。以这种方式使用MethodInvokingJobDetailFactoryBean,你就能去掉空洞的EmailReportJob类了。










热点排行