您的位置:首页 > 编程语言 > Java开发

spring定时器分析

2015-12-02 16:37 405 查看

spring定时器如何使用?

步骤1. 定义job bean

   1.TaskScheduler构造

   2.初始化相关服务

<bean id="xxxxScheduler" class="com.xxxx.TaskScheduler">

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

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

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

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

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

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

  </bean>

步骤2. 定义一个joblist bean来统一管理job

<bean id="listScheduler" class="com.xxxx.ListScheduler">

<property name="schedulerList">

<list>

<ref bean="xxxxScheduler" />

<ref bean="xxxxScheduler"/>

       <ref bean="xxxxScheduler" />

<ref bean="xxxxScheduler"/>

</list>

</property>

<property name="FinishHour" value="xxx"/>

<property name="ExecHour" value="xxx"/>

</bean>

步骤3.定义job factorybean和CronTriggerBean

<!--注册定时器信息-->

<bean id="SchedulerTriggerJobDetail"

class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">

<property name="targetObject" ref="listScheduler" />//定时任务列表

<property name="targetMethod" value="start" />//启动方法

<property name="concurrent" value="false" />//指定最终封装出的任务是否有状态

</bean>

<!--说明:Spring中使用Quartz的2种方法(extends QuartzJobBean与使用MethodInvokingJobDetailFactoryBean)-->

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

<!--配置定时器任务的调度器-->

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

<property name="cronExpression">

<value>0 0 0 * * ?</value>

</property>

</bean>

<!--说 明:org.springframework.scheduling.quartz.CronTriggerBean是spring提供的触发器,在这个 触发器中设定了要触发的job,同时设定了触发时间(cronExpression)-->

4 <!--注册监听器-->

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

<property name="schedulerName" value="xxxx"/>

<property name="quartzProperties">

<props>

<prop key="org.quartz.threadPool.threadCount">2</prop>

</props>

</property>

<property name="triggers">

<list>

<ref bean="schedulerTrigger" />

</list>

</property>

</bean>

<!--说明:org.springframework.scheduling.quartz.SchedulerFactoryBean这是一个spring的工厂bean,监听器:当spring关闭前,自动关闭scheduler,在triggers属性列表中加入定义的触发器,这里可以定义多个触发器-->

spring定时器实现原理?

核心概念

1、scheduler是一个计划调度器容器,容器里面可以盛放众多的JobDetail和trigger,当容器启动后,里面的每个JobDetail都会根据trigger按部就班自动去执行。

2、JobDetail是一个可执行的工作,它本身可能是有状态的。

3、Trigger代表一个调度参数的配置,什么时候去调。

4、当JobDetail和Trigger在scheduler容器上注册后,形成了装配好的作业(JobDetail和Trigger所组成的一对儿),就可以伴随容器启动而调度执行了。

5、scheduler是个容器,容器中有一个线程池,用来并行调度执行每个作业,这样可以提高容器效率。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: