spring整合quartz定时任务(附demo)(二)
2017-11-25 18:01
267 查看
源码下载地址:https://gitee.com/seek412/quartz02.git
在上一章节:Quartz定时任务(附demo)(一)中我们介绍了如何利用quartz创建一个普通的定时任务,本文将介绍spring与quartz的整合,让服务器启动时就运行定时任务
项目结构如下图:
注意事项:
spring3.1以下的版本必须使用quartz 2以下的版本,spring 3.1以上的版本必须使用quartz 2以上的版本,否则会报错
如果项目中同时使用了shiro框架,在引入shiro依赖包的时候需要排除quartz包,否则会报错,如下:
创建定时任务B
配置文件中对应关系如下
启动tomcat服务器,控制台输入如下结果:
在上一章节:Quartz定时任务(附demo)(一)中我们介绍了如何利用quartz创建一个普通的定时任务,本文将介绍spring与quartz的整合,让服务器启动时就运行定时任务
项目结构如下图:
步骤1:引入依赖包
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.demo</groupId> <artifactId>quartz02</artifactId> <packaging>war</packaging> <version>1.0-SNAPSHOT</version> <name>quartz02 Maven Webapp</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <!-- spring --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.3.7.RELEASE</version> </dependency> <!-- spring jdbc--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>4.3.7.RELEASE</version> </dependency> <!-- spring面向切面编程 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>4.3.7.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>3.2.4.RELEASE</version> </dependency> <!-- quartz--> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>1.8.5</version> </dependency> </dependencies> <build> <finalName>quartz02</finalName> <!-- 指定编译版本1.7 --> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> </plugins> <!-- 使用的idea,由于idea编译的时候不会把src/main/java中的xml文件编译的class中,需要添加下面语句,eclipse则不用 --> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> </resource> </resources> </build> </project>
注意事项:
spring3.1以下的版本必须使用quartz 2以下的版本,spring 3.1以上的版本必须使用quartz 2以上的版本,否则会报错
如果项目中同时使用了shiro框架,在引入shiro依赖包的时候需要排除quartz包,否则会报错,如下:
<dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-quartz</artifactId> <version>1.2.5</version> <!-- 解决 shiro和quartz 冲突--> <exclusions> <exclusion> <groupId>org.opensymphony.quartz</groupId> <artifactId>quartz</artifactId> </exclusion> </exclusions> </dependency>
步骤2:创建定时任务
创建定时任务Apackage com.demo.schedule; /** * 定时任务A * @author: admin * @date: Created in 2017/10/26 */ public class QuartzJobA { public void jobA(){ System.out.println("执行定时任务A..."); } }
创建定时任务B
package com.demo.schedule; /** * 定时任务B * @author : admin * @date : Created in 2017/10/26 */ public class QuartzJobB { public void jobB(){ System.out.println("执行定时任务B..."); } }
步骤3:添加spring配置文件
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.springframework.org/schema/beans" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"> <!-- 8. quartz配置 --> <!-- class文件对应定时任务的路径,如果有多个定时任务就配置多个 --> <bean id="quartzJobA" class="com.demo.schedule.QuartzJobA"/> <bean id="quartzJobB" class="com.demo.schedule.QuartzJobB"/> <bean id="jobDetailA" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <!-- 这里的name必须是targetObject和targetMethod --> <property name="targetObject" ref="quartzJobA"/> <property name="targetMethod" value="jobA"/> </bean> <bean id="jobDetailB" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject" ref="quartzJobB"/> <property name="targetMethod" value="jobB"/> </bean> <!-- 定义触发的条件 --> <bean id="jobTriggerA" class="org.springframework.scheduling.quartz.CronTriggerBean"> <!-- 这里的name必须是jobDetail和cronExpression --> <property name="jobDetail" ref="jobDetailA"/> <!-- 每隔5秒执行一次 --> <property name="cronExpression" value="0/5 * * * * ?"/> </bean> <bean id="jobTriggerB" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail" ref="jobDetailB"/> <property name="cronExpression" value="0/5 * * * * ?"/> </bean> <!-- 总管理类,如果将lazy-init='false',那么容器启动就会执行调度程序 --> <bean id="startQuartz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="jobTriggerA"/> <ref bean="jobTriggerB"/> </list> </property> </bean> </beans>
配置文件中对应关系如下
步骤4:配置web.xml文件
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app> <display-name>Archetype Created Web Application</display-name> <!-- 1. 启动spring容器 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> <!--配置一个上下文加载的监听器--> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> </web-app>
启动tomcat服务器,控制台输入如下结果:
相关文章推荐
- Quartz定时任务简单demo及与Spring整合
- Spring 整合 Quartz 实现动态定时任务(附demo)
- Spring 3整合Quartz 2实现定时任务三:动态暂停 恢复 修改和删除任务
- Spring3.0与Quartz的整合实现定时任务调度
- 定时任务quartz与spring整合(springboot)
- spring quartz 定时任务 demo
- spring整合quartz实现定时任务
- springboot整合Quartz实现动态配置定时任务
- Spring 3整合Quartz 2实现定时任务三:动态暂停 恢复 修改和删除任务
- Spring与Quartz的整合实现定时任务调度
- Spring 3整合Quartz 2实现定时任务--转
- Spring 3整合Quartz 2实现定时任务一:常规整合
- Spring 整合Quartz 2实现定时任务五:集群、分布式架构实现探讨
- Spring整合quartz框架实现任务定时调度
- spring boot整合quartz实现多个定时任务
- Spring整合Quartz框架实现定时任务跑批(Maven完整版)
- Spring 3整合Quartz 2实现定时任务二:动态添加任务
- Spring与Quartz的整合实现定时任务调度
- Spring整合Quartz定时任务 在集群、分布式系统中的应用(Mysql数据库环境)
- Spring 整合Quartz 2实现定时任务五:集群、分布式架构实现探讨