1.配置业务类
<!-- 业务类的配置-->
<bean id="timeTaskOne" class="com.kj.assets.service.dq.impl.RefreshTaskGroupOneImpl" />
<bean id="timeTaskTwo" class="com.kj.assets.service.dq.impl.RefreshTaskGroupTwoImpl" />
<bean id="timeTaskThree" class="com.kj.assets.service.dq.impl.RefreshTaskGroupThreeImpl" />
2.业务类在代码中的实现
业务逻辑都写在了timeQuartz()之中了。
3.将业务与quartz关联起来,这里有三组任务
<!-- JobDetail的配置(一组) -->
<bean id="jobDetailTaskOne"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="timeTaskOne" />
<property name="targetMethod" value="timeQuartz" />
<property name="concurrent" value="false" />
<!-- 是否允许任务并发执行。当值为false时,表示必须等到前一个线程处理完毕后才再启一个新的线程 -->
</bean>
<!-- JobDetail的配置(二组) -->
<bean id="jobDetailTaskTwo"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="timeTaskTwo" />
<property name="targetMethod" value="timeQuartz" />
<property name="concurrent" value="false" />
<!-- 是否允许任务并发执行。当值为false时,表示必须等到前一个线程处理完毕后才再启一个新的线程 -->
</bean>
<!-- JobDetail的配置(三组) -->
<bean id="jobDetailTaskThree"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="timeTaskThree" />
<property name="targetMethod" value="timeQuartz" />
<property name="concurrent" value="false" />
<!-- 是否允许任务并发执行。当值为false时,表示必须等到前一个线程处理完毕后才再启一个新的线程 -->
</bean>
4.配置每个任务的扫描方式
<!-- Trigger的配置 -->
<bean id="testTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="jobDetailTaskOne" />
<property name="cronExpression" value="0 0/2 * * * ? " />
<!--
每隔2s触发一次
-->
</bean>
<!-- Trigger的配置-->
<bean id="testTrigger1" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="jobDetailTaskTwo" />
<property name="cronExpression" value="0 0/2 * * * ? " />
<!--
每隔2s触发一次
-->
</bean>
<bean id="testTrigger2" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="jobDetailTaskThree" />
<property name="cronExpression" value="0 0/2 * * * ? " />
<!--
每隔2s触发一次
-->
</bean>
5.配置调度器
可以配置一个或者多个调度器,这里只配置了一个
<bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean" autowire="no">
<property name="applicationContextSchedulerContextKey" value="applicationContextKey"/>
<property name="autoStartup" value="true"/>
<property name="startupDelay" value="30" />
<property name="quartzProperties">
<props>
<prop key="org.quartz.threadPool.class">org.quartz.simpl.SimpleThreadPool</prop>
<prop key="org.quartz.threadPool.threadCount">10</prop>
<prop key="org.quartz.jobStore.class">org.quartz.simpl.RAMJobStore</prop>
<prop key="org.quartz.jobStore.misfireThreshold">60000</prop>
</props>
</property>
<property name="triggers">
<list>
<ref bean="testTrigger" /><!-- 147 -->
<ref bean="testTrigger1" /><!-- 258 -->
<ref bean="testTrigger2" /><!-- 369 -->
</list>
</property>
</bean>