当前位置: 代码迷 >> 综合 >> SpringMVC quartz 计划任务 小计
  详细解决方案

SpringMVC quartz 计划任务 小计

热度:41   发布时间:2024-01-09 04:18:54.0

单纯的SpringMVC 不集成Spring ,想要用到定时任务,在网上查阅资料,进行配置如下:

1.导入jar包:所需jar包如下(由于没有使用maven,只能自己找jar包)

quartz-2.2.1.jar
spring-context-support-4.1.6.RELEASE.jar(开始没有加入次jar,在网上搜索只是加入quartz的jar包,但是加载项目开始报错,ClassNotFound)

在项目路径下加入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"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"><!-- 添加调度的任务bean 配置对应的class--><bean id="myJob" class="com.test.timeTask.QuartzJob" /><!--配置调度具体执行的方法--><bean id="myJobDetail"     class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"><property name="targetObject" ref="myJob" /><property name="targetMethod" value="cleanTokenMap" /><property name="concurrent" value="false" /></bean><!--配置调度执行的触发的时间--><bean id="myTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"><!-- 加入相关的执行类和方法 --><property name="jobDetail" ref="myJobDetail"/><!-- 设置时间规则 (为了方便测试,设置成一分钟一次。具体的规则见详情)--><property name="cronExpression" value="*/5 * * * * ?"/>      </bean> <!--每5秒执行一次 --><!-- quartz的调度工厂 调度工厂只能有一个,多个调度任务在list中添加 --><bean id="jobTriggers" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"><property name="triggers"><list><ref bean="myTrigger"/></list></property></bean></beans> 

 web.xml 文件中加入quartz.mxl配置

<servlet><servlet-name>springMVC</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/config/springMVC-servlet.xml,/WEB-INF/config/quartz.xml</param-value></init-param><load-on-startup>2</load-on-startup>
</servlet><servlet-mapping><servlet-name>springMVC</servlet-name><url-pattern>/</url-pattern>
</servlet-mapping> 

编写测试类:

public class QuartzJob {public void cleanTokenMap(){System.out.println("我执行了一次哈!" + new Date().toString());}
}

好了,开测,但是就是一次都不执行,后来查看日志,发现

Caused by: java.lang.ClassNotFoundException: org.springframework.transaction.interceptor.TransactionInterceptor 

百度一下,是因为缺少jar包,导入spring-tx jar包,重启项目,计划任务顺利执行!

 

记录一下,以便不时之需。 

 

          

  相关解决方案