您的位置:首页 > 编程语言 > Java开发

spring quartz定时器的简单配置使用以及常见问题解答

2017-07-14 19:23 846 查看
Spring当中有几种定时器的方法,而quartz是使用比较广泛的一种方法,相较于自己在代码中用thread、timerTask和Timer等方法, quartz无疑更简单。第一次上手quartz时关于Spring的架构还不清楚,不过好在网上连接很多,自己也是摸索了好半天才配置好。现在把自己的完整配置过程给大家讲一下。

第一步首先就是到网上下载合适的quartz.jar包。我自己下载的是2.2.2版本的,网上还有说需要commons-collections.jar、commons-logging.jar、log4j以及spring.jar包,自己工程已经有了,也没下。

重点来了,需要自己到网上下载或者配置以下文件,包括org.springframework.spring-tx.4.2.4.release.jar包,以及org.springframework.spring-context-support.4.2.4.release.jar,版本依据自己的工程可以不同,这个我也是借鉴了 Defonds
的专栏 - CSDN博客 http://blog.csdn.net/defonds/article/details/49496895 里面所写。要在工程根目录的pom.xml中进行,如下图所示。

<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${springframework.version}</version>
</dependency>
<!-- Transaction dependency is required with Quartz integration -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${springframework.version}</version>
</dependency>

<!-- Quartz framework -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>${quartz.version}</version>
</dependency>
</dependencies>
图中${springframework.version}如果按照我的版本来的话就填4.2.4.release。此外,如果这些jar包如果配置完后如果还报错,说明你的:\.m2\repository目录下没有这些Jar包,需要网上下载,给个下载地址链接:http://search.maven.org/#search%7Cga%7C1%7C
然后按照规范将这些jar包拷贝到上述本地目录下,具体怎么拷贝怎么命名自己可以再搜,网上很多。 <bean id="recycleUtil" class="com.navinfo.had.validator.impl.RecycleUtil" scope="prototype" >
<property name="dbhelp" ref ="dbHelper" />
</bean>
<bean id="QuartzJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref ="recycleUtil" />
<property name="targetMethod" value="recycle" />
</bean>
<bean id="QuartzJobTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail">
<ref bean="QuartzJobDetail" />
</property>
<property name="cronExpression">
<value>0 0/1 * * * ?</value>
</property>
</bean>
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean" autowire="no">
<property name="triggers">
<list>
<ref bean="QuartzJobTrigger" />
</list>
</property>
</bean> 接下来就是调度的问题了,其实蕃薯耀 - ITeye博客 http://fanshuyao.iteye.com/blog/2309223以及Defonds 的专栏 - CSDN博客 http://blog.csdn.net/defonds/article/details/49496895 写的很详细,大家在写的时候可能会遇到很多参数不知道要不要改,改那个的问题,以我写的为例的话,其实大家主要关注的就是第一行中recycleUtil是要自己命名的,class也是自己工程中触发的类名称,这个是自己要调用的类的bean名,在代码第5行中要引用,第二行的代码可以忽略不计。第6行中的recycle即为

com.navinfo.had.validator.impl.RecycleUtil
中的方法名,一定要完全对应好。剩下的参数大可按照我写的不用改动。需要注意的是这个方法要是无参的,如果需要传递的参数的话,可以按照如下进行更改

<bean id="QuartzJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref ="recycleUtil" />
<property name="targetMethod" value="recycle" />  
<property name="arguments" value="D:/" />  
</bean>

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐