单纯的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包,重启项目,计划任务顺利执行!
记录一下,以便不时之需。