今天用spring整合quartz,启动的时候报错,java.lang.NoClassDefFoundError: org/springframework/transaction/TransactionException。
spring版本用的是4.3.7,quartz用的是2.2.3。(据说版本问题可能会报错,看到一些前辈说spring 3.1及以下的话,quartz需要用 1.x版本,spring3.1以上,就要用quartz-2.x,原因是:spring对于quartz的支持实现,org.springframework.scheduling.quartz.CronTriggerBean继承了org.quartz.CronTrigger,在quartz1.x系列中org.quartz.CronTrigger是个类,而在quartz2.x系列中org.quartz.CronTrigger变成了接口,从而造成无法用spring的方式配置quartz的触发器(trigger)。本人没有测试,大家想了解的可以去测试)。
我的报错原因是缺少spring-jdbc依赖包。。。。。。
而且还需要spring-context-support包的依赖。
大致的配置如下:
<?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.xsd">
<!-- Root Context: defines shared resources visible to all other web components -->
<!-- 使用quartz三步走!
1.配置任务
2.配置触发器
3.配置调度器
-->
<bean id="job" class="com.guoy.quartz.JobServiceImpl"></bean>
<!-- 1.配置任务 -->
<bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject">
<ref bean="job"/>
</property>
<property name="targetMethod">
<value>doJob</value>
</property>
</bean>
<!-- 2.配置触发器 -->
<bean id="cronTigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail">
<ref bean="jobDetail"/>
</property>
<property name="cronExpression">
<value>0/5 * * * * ?</value>
</property>
</bean>
<!-- 3.配置调度器 -->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="cronTigger"/>
</list>
</property>
</bean>
</beans>
以下是spring依赖包:
<!-- Spring -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${org.springframework-version}</version>
<exclusions>
<!-- Exclude Commons Logging in favor of SLF4j -->
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${org.springframework-version}</version>
</dependency>
写的比较简单,望海涵!