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

springmvc+quartz定时任务的实现

2016-02-19 17:43 302 查看
1、 导入quartz.jar包,或者pom.xml 配置对应的依赖:

<!-- quartz -->

<dependency>

<groupId>quartz</groupId>

<artifactId>quartz</artifactId>

<version>1.5.2</version>

</dependency>

2、 在Web项目web.xml中配置quartz的配置文件加载路径:

<servlet>

<servlet-name>springmvc</servlet-name>

<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

<init-param>

<param-name>contextConfigLocation</param-name>

<param-value>classpath*:servlet-context.xml,classpath*:applicationContext-quartz.xml</param-value>

</init-param>

<load-on-startup>1</load-on-startup>

</servlet>

3、写具体的定时调度的任务:

public class QuartzTask {

private static final Logger LOG = LoggerFactory.getLogger(QuartzTask.class);

//定时任务入口

public void start(){

LOG.info("【QuartzTask--start()】定时任务执行开始");

System.out.println("============定时任务执行");

LOG.info("【QuartzTask--start()】定时任务执行结束");

}

}

4、配置quartz的xml配置信息,名字可以随便,需和web.xml中的一致。

applicationContext-quartz.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:jpa="http://www.springframework.org/schema/data/jpa"

xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa.xsd" default-lazy-init="false">

//执行的定时任务的类

<bean id="quartzTest" class="com.cheyipai.mobile.service.user.QuartzTask"></bean>

//定义调用对象和调用对象的方法

<bean id="quartzTask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">

<property name="targetObject" ref="quartzTest"/> //调用对象

<property name="targetMethod" value="start"/> //调用的方法

<property name="concurrent" value="false"/>

//其中concurrent属性标识的解释为:对于相同的JobDetail,当指定多个Trigger时, 很可能第一个 //job完成之前,第二个job就开始了。指定concurrent设为false,多个job不会并发运行,第二个 //job将不会在第一个job完成之前开始。

</bean>

//设置时间

<bean id="quartzDoTime" class="org.springframework.scheduling.quartz.CronTriggerBean"><!--CronTriggerFactoryBean-->

<property name="jobDetail" ref="quartzTask"/>

<!--<property name="cronExpression" value="0 0 0/4 * * ?"/>--> <!-- 每隔4个小时 -->

<property name="cronExpression" value="0 0/1 * * * ?"/> <!-- 每隔1分钟 -->

</bean>

<!-- 总管理类,如果将lazy-init='false'那么容器启动就会执行调度程序 -->调度工厂

<bean id="startQuartz" lazy-init="false" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">

<property name="triggers">

<list>

<ref bean="quartzDoTime"/>

</list>

</property>

</bean>

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