定时任务和触发器
portal基于scheduling.quartz
概括起来的步骤:
1,先注册一个要执行定时任务的bean
2,配置任务详情工厂:配置一个quartz.MethodInvokingJobDetailFactoryBean对应的Bean,里面设置要调用的bean以及对应的方法
3,配置一个触发器(即:什么时候调用定时任务):quartz.SimpleTriggerBean
4,配置任务工厂
@service 是有用的 是有用的相当于 xml配置中得bean id = service
也可以不指定
不指定相当于
bean id = com. service.service
就是这个类的全限定名
所以猜测是正确的
@Service("submitReview")
用这个注解标记了一个类
SubmitReviewTask,所以就能自动找到<property name="targetObject" ref="submitReview" />对应的java类
<!-- 送审任务 -->
<!-- quartz任务详情工厂 -->
<bean id="submitReviewAuditTask"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!--
2
要执行的定时任务的类对应的bean名称;
submitReview是java类构建的bean
@Service("submitReview")
用这个注解标记了一个类
SubmitReviewTask,所以就能自动找到<property name="targetObject" ref="submitReview" />对应的java类
-->
<property name="targetObject" ref="submitReview" />
<!-- 要执行的方法名称 -->
<property name="targetMethod" value="audit" />
</bean>
3
<!--配置定时规则触发器,配置定时触发规则有两种不同的实现类,一种是org.springframework.scheduling.quartz.SimpleTriggerBean,另外一种是org.springframework.scheduling.quartz.CronTriggerBean。区别在于前者只能做简单的定时,比如每隔多久触发一次,而后者可以使用cron表达式来自定义定时的规则。这边我采用后者。配置了从周一到周日,每天的3点20触发。cron表达式的具体用法可自行百度。这边的jobDetail属性填写上一步配置的任务详情,即realOrderQuartzJobDetail。
-->
<bean id="submitReviewAuditTaskTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
<!-- 触发器触发的 执行定时任务的bean id -->
<property name="jobDetail" ref="submitReviewAuditTask" />
<!--延迟10s -->
<property name="startDelay" value="10000" />
<!--每10s启动一次 -->
<property name="repeatInterval" value="10000" />
</bean>
4.
<!--.配置调度工厂,在调度工厂中,我们调度相应的触发器。这里就是调度上一步配置的submitReviewAuditTaskTrigger触发器<bean name="quartzScheduler"
<bean name="quartzScheduler"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<!-- 普通触发器 :触发器列表 -->
<property name="triggers">
<list>
<ref bean="cacheInitTrigger" />
<ref bean="submitReviewAuditTaskTrigger" />
<ref bean="submitReviewQueryTaskTrigger" />
<ref bean="sendSMSTaskTrigger" />
<ref bean="signServiceUserTaskTrigger" />
<ref bean="signServiceQueryTaskTrigger" />
<ref bean="invoiceTaskTrigger" />
<ref bean="sendEmailTaskTrigger" />
</list>
</property>
</bean>