spring下使用Quartz完成定时任务

来源:互联网 发布:排版报纸的软件 编辑:程序博客网 时间:2024/05/22 23:11

springMVC框架下经常会用到定时任务来进行项目初始化或者定时执行一些任务,这是可以使用Quartz来完成,强大而简单,项目中第一次试着使用,目前可以独立使用,但其中的原理还有待于慢慢总结,把使用过程写下来,权当总结了,也为需要使用的同学提供个参考

第一步,需要在pom.xml文件中引入Quartz,格式如下

<dependency><groupId>org.quartz-scheduler</groupId><artifactId>quartz</artifactId><version>2.2.1</version></dependency>

第二步,编写需要定期执行的java代码的类和方法(下面需要将该类的类名和方法名配置到spring-quartztask.xml文件中),具体代码如下:

package com.lgg.web.quartz;import java.util.Date;import org.slf4j.Logger;import org.slf4j.LoggerFactory;@Componentpublic class ModifyUserNameTask {private static final Logger logger = LoggerFactory.getLogger(ModifyNameTask.class);@Autowiredprivate UserService userService;//定时修改用户名 public void taskJob(){logger.info("定时任务开始....");//调用定时修改用户名的service层的方法userService.ModifyName();logger.info("定时结束....");}}

第三步,添加spring-quartztask.xml文件,配置quartz属性信息,具体内容如下:

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"><!-- 定时修改用户名 --><!-- 将第二步中的类的全路径写入到class中,id需要自己起个名字,不能重复,下面还用得着--><bean id="modifyUserNameTask" class="com.com.lgg.web.quartz.ModifyUserNameTask"></bean><!-- id需要自己起个名字,class不需要修改 --><bean id="modDeskTopReviewDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"><property name="targetObject" ref="modDeskTopReviewTask"/><!-- ref中的值对应着你第一个bean的id,二者必须一样 --><property name="targetMethod" value="taskJob"/><!-- value中的值对应着你第二步中java类中的那个方法名 --><property name="concurrent" value="false"/><!--多个job不会并发运行,第二个job将不会在第一个job完成之前开始。--></bean><!--这个bean的id需要在下面的list中用到,class不需要修改--><bean id="modDeskTopReviewTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"><property name="jobDetail" ref="modDeskTopReviewDetail"/><!--与上面第二个bean的id的值一样 --><property name="cronExpression" value="0 0 3 * * ?"/><!--每天凌晨3点执行  --><property name="description" value="定时修改用户名"></property></bean><bean id="startScheduler"  lazy-init="true" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"><property name="autoStartup" value="true"/><property name="schedulerName" value="cronScheduler" /><property name="triggers"><list><!-- 添加上面第三个bean的id的值 --><ref bean="modDeskTopReviewTrigger"/></list></property></bean></beans>

第四步,在Web项目app_config.xml中配置spring-quartztask.xml 文件的加载路径,具体内容如下

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"       xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context"       xmlns:util="http://www.springframework.org/schema/util"       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsdhttp://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.1.xsd"><import resource="spring-quartztask.xml"></import></beans>
到这整个就配置完成了.设置启动时间,项目启动后到时间就可以启动了.




0 0
原创粉丝点击