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>
<!-- 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>
相关文章推荐
- Spring ContextLoaderListener And DispatcherServlet Concepts
- Spring实现AOP的4种方式
- 关于eclipse中recycleview/cardview的引入(环境搭建)
- What does ContextLoaderListener do in Spring?
- java方法,构造方法
- 一些java小细节问题
- Java 等待多个子线程 join
- java 遍历某月的所有日期
- CXF spring jaxws:endpoint jaxws:server 区别 与 关系
- 如何在Eclipse下安装myeclipse插件
- 解析Java的迭代器中的fast-fail错误检测机制
- Eclipse不能自动联想类成员的解决方法之一
- 面向对象01-java基础
- 享元模式(Flyweight)
- Java代码中的特殊注释
- java解析xml 之SAX 解析方式原理
- C#和Java时间字符串的毫秒字符不同
- 我爱学Java之枚举
- 【JAVA】 基础练习 BASIC-12 十六进制转八进制
- jvm学习笔记一(java内存区域)