定时器有两种方式
1.延迟启动
<bean id="timerTaskRunnerChain" class="bingo.uam.task.TimerTaskRunnerChain">
<property name="timerTasks">
<list>
<bean class="bingo.uam.task.XXXXTask"></bean>
</list>
</property>
</bean> <bean id="btBuildTimerTask"
class="org.springframework.scheduling.timer.ScheduledTimerTask">
<!-- 设置启动延迟 -->
<property name="delay">
<value>3600000</value> <!-- 1个小时后启动 -->
</property>
<!-- 后续延迟 -->
<property name="period">
<value>3600000</value>
</property>
<!-- 指定触发器信息 -->
<property name="timerTask">
<ref local="timerTaskRunnerChain" />
</property>
</bean> <!-- 使用TimerFactoryBean类,你可以让Spring使用配置创建触发器,并为一组指定的ScheduledTimerTask bean自动创建Timer实例。 -->
<bean id="timerFactory"
class="org.springframework.scheduling.timer.TimerFactoryBean">
<property name="scheduledTimerTasks">
<list>
<ref local="btBuildTimerTask" />
</list>
</property>
</bean>
2.某个设定时刻启动
<!-- 配置Quartz, 用于凌晨2点启动 -->
<bean id="blogTimerTask" class="bingo.uam.task.XXXXTask"/>
<bean id="blogSchedulerJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="blogTimerTask"/>
<property name="targetMethod" value="run"/> <!--启动的方法 -->
<property name="concurrent" value="false"/>
</bean>
<bean id="blogCronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean" >
<property name="jobDetail" ref="blogSchedulerJobDetail"/>
<property name="cronExpression">
<!-- 秒 分 时 日 月 年 -->
<value>0 0 2 * * ?</value> <!-- 每天两点启动 -->
</property>
</bean>
<bean id="blogSchedulerFactory" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref local="blogCronTrigger"/>
</list>
</property>
</bean>