spring定时任务

targetObject-ref:指向你要定时加载的目标类。
targetMethod:指向定时加载目标类中需要执行的方法。即定时执行smsSendService类的autoSmsTime()方法。
concurrent="false":表示不并发操作。对于相同的JobDetail,当指定多个Trigger时, 很可能第一个job完成之前,第二个job就开始了。指定concurrent设为false,多个job不会并发运行,第二个job将不会在第一个job完成之前开始。

示例:

<!-- 定义目标bean和bean中的方法 -->
<bean id="simpleJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<bean class="com.dhb.quartz.QueryTranStatusService" />
</property>
<property name="targetMethod" value="execute" />
<property name="concurrent" value="true" />
</bean>
<!-- 调度触发器 -->
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="simpleJobDetail" />
<property name="cronExpression" value="0 0/2 * * * ?" />
</bean>

spring定时器实现原理?
核心概念
1、scheduler是一个计划调度器容器,容器里面可以盛放众多的JobDetail和trigger,当容器启动后,里面的每个JobDetail都会根据trigger按部就班自动去执行。
2、JobDetail是一个可执行的工作,它本身可能是有状态的。
3、Trigger代表一个调度参数的配置,什么时候去调。
4、当JobDetail和Trigger在scheduler容器上注册后,形成了装配好的作业(JobDetail和Trigger所组成的一对儿),就可以伴随容器启动而调度执行了。
5、scheduler是个容器,容器中有一个线程池,用来并行调度执行每个作业,这样可以提高容器效率。

posted @ 2017-02-21 10:43  wxiaoxiao  阅读(320)  评论(0编辑  收藏  举报