spring 配置 quartz排程任务小结

最近看了下quartz排程任务,以前也有用过,但是没有细纠他的配置。这两天看了下,做个小结。

 

配合 spring 配置 quartz 步骤:

 

1. 导入 spring.jar,quartz-all-1.6.5.jar (可以换成不同版本)。当然还有其他一些依赖类库,如commons-collections commons-logging.jar ,具体可以查看网络资料,哈哈!

2. 撰写 排程启动时执行的类。并在spring中配置。

    <bean id="quartzTest" class="com.test.service.impl.QuartzTest" init-method="init"/>  

    这个类的内容:

    import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.springframework.scheduling.quartz.QuartzJobBean; public class QuartzTest extends QuartzJobBean { private String method; public String getMethod() { return method; } public void setMethod(String method) { this.method = method; } @Override protected void executeInternal(JobExecutionContext arg0) throws JobExecutionException { if("testQuartz".equals(this.method)) { testQuartz(); } } public void testQuartz() { System.out.println("测试 排程启动!!!"); } public void init() { System.out.println("========================QuartzTest Init========================"); } }

 3. 配置 quartz 的jobDetail,CronTriggerBean类(spring 还有个简单的粗粒度的配置simple模式,将摘一篇网友的文章说明)

     配置 jobDetail有2种方式

     <bean id="testQuartz" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject" ref="quartzTest"/> <property name="targetMethod" value="testQuartz"/> <!-在该任务没有完成的情况下,不允许并发发起排程--> <property name="concurrent" value="false"/> </bean>

 

     <bean id="testQuartz" class="org.springframework.scheduling.quartz.JobDetailBean"> <property name="jobClass" value="tw.com.synnex.competency.service.impl.QuartzTest" /> <property name="jobDataAsMap"> <map><entry key="method" value="testQuartz" /></map> </property> </bean> 

 

    很明显,后面那种配置,还要在 quartzTest类里面加 method属性。也没法控制并发。(这个经常导致排程堵塞)

    

    接下来配置 testQuartzCronTrigger

    <bean id="testQuartzCronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail" ref="testQuartz"/> <!--每分钟启动一次,具体配置见我博客上另外一个介绍 cronExpression文章--> <property name="cronExpression" value="0 0/1 * * * ?"/> </bean>

 

    4. 配置 spring排程启动工厂。

 

    <!--lazy-init="false" 这个属性配置程序一启动就触发一次--> <bean id="schedulerFactoryBean" lazy-init="false" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="exchangeScoreSeviceCronTrigger" /> <ref bean="transToTableSeviceCronTrigger" /> <ref bean="testQuartzCronTrigger" /> </list> </property> </bean>

 

5. 配置好这些,启动web服务就Ok啦。

 

 

 

 

 

你可能感兴趣的:(spring,bean,quartz,Class,任务,triggers)