Spring中可以通过配置方便的实现周期性定时任务管理,这需要用到以下几个类
org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean --配置需要调度的Bean的某个方法org.springframework.scheduling.quartz.SimpleTriggerBean --定时器,负责配置启动时间、执行周期org.springframework.scheduling.quartz.SchedulerFactoryBean --触发器,负责配置所有定时器 实例如下:
<!-- 刷新系统参数文件配置 --> <bean id="RefreshSystemParam" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <!--目标service--> <property name="targetObject" ref="operatSupplierBlackRule" /> <!---要执行的方法名字--> <property name="targetMethod" value="doBlacklistRefresh" /> <property name="concurrent" value="false" /> </bean> <bean id="SystemParam.RefreshTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> <!--给RefreshSystemParam配置时间信息,name的jobDetail是spring内部需要注入的名字--> <property name="jobDetail" ref="RefreshSystemParam" /> <!-- 配置时间 每天00:00:00启动 --> <property name="cronExpression"> <value>0 0 0 * * ?</value> </property> </bean> <!--时间或者用这个类控制:org.springframework.scheduling.quartz.SimpleTriggerBean--> <!-- <bean id="SystemParam.RefreshTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean"> <property name="jobDetail" ref="RefreshSystemParam" /> //服务器启动多久后开始执行 <property name="startDelay" value="0" /> //十分钟刷新一次 , 单位:毫秒 <property name="repeatInterval" value="60000" /> </bean> --> <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="SystemParam.RefreshTrigger" /> </list> </property> <property name="quartzProperties"> <props> <prop key="org.quartz.threadPool.threadCount">2</prop> </props> </property> <!--程序加载后是否自动启动 --> <property name="autoStartup"> <value>true</value> </property> </bean>
Spring--quartz中cronExpression 时间配置将在下一篇博文中讲解