1.首先在你web项目中pom.xml配置相关依赖jar包,非maven项目自行添加对应版本的jar文件
pom.xml:
<!-- quartz定时器相关依赖jar版本 -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency>
2.你需要创建spring-quartz.xml文件,并且在web.xml中能够扫描到该配置文件
web.xml:
<!-- spring mvc servlet-->
<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:config/spring*.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
<async-supported>true</async-supported>
</servlet>
<!-- spring监听器 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 防止spring内存溢出监听器,比如quartz -->
<listener>
<listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
</listener>
spring-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:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<!--注入任务处理类bean -->
<bean id="quartzTask" class="com.demo.task.MyQuartzTask"></bean>
<!-- 2.任务触发器详细信息bean -->
<bean id="myJobDetail2" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!-- 任务执行对象 -->
<property name="targetObject" ref="quartzTask"></property>
<!-- 任务执行对象中对应的执行方法 -->
<property name="targetMethod" value="doCronTaskThree"></property>
<!-- 任务是否可并发执行,默认为不并发(false) -->
<property name="concurrent" value="true"></property>
</bean>
<!-- 任务触发器2 -->
<bean id="cronTrigger2" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<!-- 任务详细信息 -->
<property name="jobDetail" ref="myJobDetail2"></property>
<!-- quartz任务执行表达式 ,每隔三秒执行一次任务-->
<property name="cronExpression" value="0/3 * * * * ?"></property>
</bean>
<!-- 2.任务触发器详细信息bean -->
<bean id="myJobDetail3" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!-- 任务执行对象 -->
<property name="targetObject" ref="quartzTask"></property>
<!-- 任务执行对象中对应的执行方法 -->
<property name="targetMethod" value="doCronTaskFive"></property>
<!-- 任务是否可并发执行,默认为不并发(false) -->
<property name="concurrent" value="true"></property>
</bean>
<!-- 触发器3 -->
<bean id="cronTrigger3" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<!-- 任务详细信息 -->
<property name="jobDetail" ref="myJobDetail3"></property>
<!-- 设置quartz任务执行表达式 ,每隔五秒执行一次任务-->
<property name="cronExpression" value="0/5 * * * * ?"></property>
</bean>
<!-- 触发器调度工厂 -->
<bean id="schedulerFactory" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<!--配置多个触发器-->
<ref bean="cronTrigger2"/>
<ref bean="cronTrigger3"/>
</list>
</property>
</bean>
</beans>
3.创建执行任务的java类。
MyQuartzTask.java:
package com.demo.task;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* Created by xxx on 2018/8/25.
*/
public class MyQuartzTask {
//触发器运行的任务3
public void doCronTaskFive(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("doCronTaskFive《5s/次》正在运行..."+sdf.format(new Date()));
}
//触发器运行的任务2
public void doCronTaskThree(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("doCronTask《3s/次》正在运行..."+sdf.format(new Date()));
}
}
4.开启项目,执行结果:
doCronTask《3s/次》正在运行...2018-08-25 12:28:39
doCronTaskFive《5s/次》正在运行...2018-08-25 12:28:40
doCronTask《3s/次》正在运行...2018-08-25 12:28:42
doCronTask《3s/次》正在运行...2018-08-25 12:28:45
doCronTaskFive《5s/次》正在运行...2018-08-25 12:28:45
doCronTask《3s/次》正在运行...2018-08-25 12:28:48
doCronTaskFive《5s/次》正在运行...2018-08-25 12:28:50
doCronTask《3s/次》正在运行...2018-08-25 12:28:51
doCronTask《3s/次》正在运行...2018-08-25 12:28:54
doCronTaskFive《5s/次》正在运行...2018-08-25 12:28:55
doCronTask《3s/次》正在运行...2018-08-25 12:28:57