有朋自远方来,不亦乐乎。
Java Spring MVC + Quartz 实现定时启动任务配置
发布于 2年前 ( 2017-02-18 ) 阅读: 2,595 次 评论: 3 条 百度已收录 隐藏边栏
[收起] 文章目录

我们在做项目中肯定避免不了会用到来执行某些动作。

那我们 MVC 框架怎么配置呢,下面来看看下吧

一:创建XML配置文件

我这里命名为:spring-schedule.xml,然后在web.xml 中引入该xml文件。

如果在applicationContext.xml中引入,会存在定时任务被初始化两次的问题。

第一次:web容器启动的时候,读取applicationContext.xml文件时,会加载一次。

第二次:Spring本身会加载applicationContext.xml一次。

<init-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:applicationContext.xml,classpath:spring-schedule.xml</param-value>
</init-param>

spring-schedule.xml 配置如下

MethodInvokingJobDetailFactoryBean添加任务类的配置,在这个配置中设置了targetObject和targetMethod两个属性,即要执行的任务对象和任务方法。

<bean id="timeRunJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
	<!-- 定义的bean -->
	<property name="targetObject" ref="timerun" />
	<!-- class中需要调用的方法名 -->
	<property name="targetMethod" value="run" />
</bean>

CronTriggerFactoryBean添加触发器的配置,设置的jobDetail和cronExpression分别对应任务类和启动时间。

<bean id="timeRunTriggers" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
	<property name="jobDetail" ref="timeRunJobDetail" />
	<!-- 模拟时间,作为测试用 每天08-23小时 每一分钟执行一次 -->
	<property name="cronExpression" value="0 * 08-23 * * ?" />
</bean>

添加bean 引用对应任务类

<bean id="timerun" class="com.cn.xzbms.common.schedule.TimedRun"></bean>

最后来添加触发器来决定是否触发我们的定时任务

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">  
     <!-- 添加触发器 -->  
     <property name="triggers">  
         <list>  
            <ref bean="timeRunTriggers" />
         </list>  
     </property>  
</bean>

二:创建测试类

package com.cn.xzbms.common.schedule;

public class TimedRun {
	public void run() {
		System.out.println("晓庄博客 -  https://www.xzblog.cn ~");
	}
}

注明:别忘了引入quartz的jar包。
我使用的是,所以在pom.xml中引入了

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

三:运行结果

目前评论:3   其中:访客  2   博主  1

发表评论

有人回复时邮件通知我

请稍候,正在加载新评论...
  1. 上海建站公司 ( 2017.03.07 11:21:00 ) 上海市 电信 | Windows XP | Chrome 45.0.2454.101 #1

    看起来很复杂的呢

    • 晓庄 ( 2017.03.13 22:55:27 ) 广东省深圳市 电信 | Windows 8.1 | Chrome 56.0.2924.87

      @上海建站公司 不复杂啊。

  2. themebetter ( 2017.03.13 16:33:37 ) 河南省信阳市 联通 | Windows 8.1 | 搜狗浏览器 2.X #2

    技术文,很不错。