Quartz集成springMVC 的方案一

来源:互联网 发布:远程网络教育要考试吗 编辑:程序博客网 时间:2024/04/30 04:53

Quartz是一个开放源码项目,专注于任务调度器。

 

springMVC 具体的搭建框架就不具体说明,接下来直接描述把Quartz集成到springMVC 框架中。

 

步骤:

 

 1.引入所需要的jar

 2.新建要定时做的事情的具体实现类和方法,这边可以实现多个类和方法,只要spring-quartz.xml文件中配置任务几个并对应的实现类和方法。

 

 public class DataButtServiceImpl  {public void run() {       //定时要做的事情的具体实现     } }

2.新建一个spring-quartz.xml文件放在跟springMVC 的配置文件同级目录就可以了,spring-quartz.xml可以配置多个任务,列如quartzJobAquartzJobB,并配置对应的方法和时间表达式(什么时间执行)

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"><beans><!-- 要调用的工作类 --><bean id="quartzJobA" class="cn.handle.data.impl.DataButtServiceImpl"/><!-- 定义调用对象和调用对象的方法A --><bean id="jobtaskA" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">    <!-- 调用的类 -->    <property name="targetObject">        <ref bean="quartzJobA"/>    </property>    <!-- 调用类中的方法 -->    <property name="targetMethod">        <value>run</value>    </property></bean><!-- 要调用的工作类 <bean id="quartzJobB" class="cn.EventProviderServiceImpl"/>--><!-- 定义调用对象和调用对象的方法B <bean id="jobtaskB" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">    <property name="targetObject">        <ref bean="quartzJobB"/>    </property>    <property name="targetMethod">        <value>run</value>    </property></bean>--><!-- 定义触发时间A --><bean id="doTimeA" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">    <property name="jobDetail">        <ref bean="jobtaskA"/>    </property>    <property name="cronExpression">        <value>0 0/1 * * * ?</value>    </property></bean><!-- 定义触发时间B <bean id="doTimeB" class="org.springframework.scheduling.quartz.CronTriggerBean">    <property name="jobDetail">        <ref bean="jobtaskB"/>    </property>    <property name="cronExpression">        <value>0 * * * * ?</value>    </property></bean>--><!-- 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序  --><bean id="startQuartz" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">    <property name="triggers">        <list>            <ref bean="doTimeA"/>            <!-- <ref bean="doTimeB"/> -->        </list>    </property></bean></beans>

cronExpression值有几种如下:

"0 0 12 * * ?" 每天中午12点触发 

"0 15 10 ? * *" 每天上午10:15触发 

"0 15 10 * * ?" 每天上午10:15触发 

"0 15 10 * * ? *" 每天上午10:15触发 

"0 15 10 * * ? 2005" 2005年的每天上午10:15触发 

"0 * 14 * * ?" 在每天下午2点到下午2:59期间的每1分钟触发 

"0 0/5 14 * * ?" 在每天下午2点到下午2:55期间的每5分钟触发 

"0 0/5 14,18 * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发 

"0 0-5 14 * * ?" 在每天下午2点到下午2:05期间的每1分钟触发 

"0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:102:44触发 

"0 15 10 ? * MON-FRI" 周一至周五的上午10:15触发 

"0 15 10 15 * ?" 每月15日上午10:15触发 

"0 15 10 L * ?" 每月最后一日的上午10:15触发 

"0 15 10 ? * 6L" 每月的最后一个星期五上午10:15触发 

"0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发 

2.web.xml中描述启动时要读spring-quartz.xml这个文件并解析


总结:

  这样的集成存在几个缺点:

   1.我们能不能在页面上进行管理JOB

   2.不能支持持久化任务,集群和分布式任务。


接下去讲另外一个集成,针对上面总结的改进。






0 0
原创粉丝点击