spring3.0以后提供自带的定时任务,编写起来很方便。但是在这里我讲解的并不是使用spring提供的定时任务模块,而是使用quartz ,quartz 是一种功能强大的定时工具。spring提供了对quartz的接口。
一,准备:
1.下载spring3.2, 下载地址;
2.下载:quartz 2.2.1 , 下载地址:http://www.quartz-scheduler.org/
二,项目的目录结构以及所需的jar包如下:
1.编写需要定时执行的java类TaskScanner.java
package com.bjsxt.cronjob; public class TaskScaner { public void execScanTask(){ System.out.println("定时任务...."); } }
2.配置spring的bean文件cron_job.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <!--定时任务--> <bean id="taskScaner" class="com.bjsxt.cronjob.TaskScaner"> </bean> <bean id="taskScanerDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject"> <ref bean="taskScaner" /> </property> <property name="targetMethod"> <value>execScanTask</value> </property> </bean> <bean id="taskScanerTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <property name="cronExpression"> <value>0/1 * * * * ?</value><!-- 定时任务执行频率 --> </property> <property name="jobDetail"> <ref bean="taskScanerDetail" /> </property> </bean> <!-- --> <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="taskScanerTrigger" /> </list> </property> </bean> </beans>
3.编写测试类UserServiceTest.java
package com.bjsxt.service; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class UserServiceTest { public static void main(String[] args) throws Exception { String[] configs = {"cron_job.xml"}; ApplicationContext act = new ClassPathXmlApplicationContext(configs); } }
problem :
Caused by: java.lang.IncompatibleClassChangeError: class org.springframework.scheduling.quartz.CronTriggerBean has interface org.quartz.CronTrigger as super class
解决:
原因是Spring 3.0版本中支持Quartz版本是2.0以下的,在使用最新的Quartz包(>2.0)之后,接口不兼容。
解决办法有两种:
1.降低Quartz版本,降到1.X去。
2.升级Spring版本到3.1+,根据Spring的建议,将原来的**TriggerBean替换成**TriggerFactoryBean,例如CronTriggerBean 就可以替换成 CronTriggerFactoryBean。替换之后问题解决。
参考:http://www.oschina.net/question/8676_9032
http://gong1208.iteye.com/blog/1773177
相关推荐
### Spring中的Quartz定时任务与持久化管理 #### 一、Spring与Quartz简介 Spring框架作为Java领域中广泛使用的轻量级应用框架之一,它提供了丰富的功能支持,包括依赖注入、面向切面编程以及MVC框架等。而Quartz是...
通过上述介绍,我们了解到 Spring 提供了一种强大的机制来实现定时任务,无论是简单的定时任务还是动态调整的复杂任务,都可以通过 Spring + Quartz 得到很好的支持。此外,动态定时任务的灵活性使得应用能够更好地...
Spring 框架自3.0版本起引入了`@Scheduled`注解来简化定时任务的配置与管理,相较于传统的Quartz等框架,它提供了更为简洁易用的解决方案。 #### 一、Spring 定时任务基础概念 **1.1 Spring 定时任务概述** ...
Quartz 是一个完全由 Java 编写的开源任务调度框架,通过触发器设置作业定时运行规则,控制作业的运行时间。Quartz 框架的主要特点包括: * 强大的调度功能,例如丰富多样的调度方法,可以满足各种常规和特殊需求 *...
Spring 框架提供了多种机制来支持定时任务的实现,这其中包括基于 Java 的标准 `java.util.Timer` 和更为强大的 Quartz 调度框架的支持。本文档将详细介绍这两种定时器的配置过程及其在 Spring 中的应用。 #### 二...
任务规划 2.6.4. 对Java 5(Tiger)的支持 2.7. 移植到Spring 2.0 2.7.1. 一些变化 2.7.1.1. Jar包 2.7.1.2. XML配置 2.7.1.3. Deprecated的类和方法 2.7.1.4. Apache OJB 2.7.1.5. iBatis 2.8. 更新的样例应用 2.9...
在开始迁移之前,首先需要了解当前定时器的运行环境、使用的定时器框架(如Quartz、Spring Task等)、定时任务的详细配置和逻辑。这包括定时任务的执行频率、触发条件、依赖关系以及日志记录等。同时,记录下所有...
Spring Framework 开发参考手册 Rod Johnson Juergen Hoeller Alef Arendsen Colin Sampaleanu Rob Harrop Thomas Risberg Darren Davison Dmitriy Kopylenko Mark Pollack Thierry Templier Erwin ...
2.2. 控制反转(IoC)容器 2.2.1. 新的bean作用域 2.2.2. 更简单的XML配置 2.2.3. 可扩展的XML编写 2.2.4. Annotation(注解)驱动配置 2.2.5. 在classpath中自动搜索组件 2.3. 面向切面编程(AOP) 2.3.1. 更加...
2.2. 控制反转(IoC)容器 2.2.1. 更简单的XML配置 2.2.2. 新的bean作用域 2.2.3. 可扩展的XML编写 2.3. 面向切面编程(AOP) 2.3.1. 更加简单的AOP XML配置 2.3.2. 对@AspectJ 切面的支持 2.4. 中间层 2.4.1. ...
2.2. 控制反转(IoC)容器 2.2.1. 新的bean作用域 2.2.2. 更简单的XML配置 2.2.3. 可扩展的XML编写 2.2.4. Annotation(注解)驱动配置 2.2.5. 在classpath中自动搜索组件 2.3. 面向切面编程(AOP) 2.3.1. 更加...
任务调度Quartz 1.8.5可实现定时任务的安排和执行。 持久层框架MyBatis 3.2提供了灵活的SQL操作,简化了数据库操作。 日志管理SLF4J和Log4j是常用的日志记录框架,提供了灵活的日志配置和多种日志适配器。 工具类...
它集成了大量常用的第三方库配置,如数据访问技术(JPA)、定时任务(Quartz)、邮件服务等,使得开发者可以快速构建一个独立的、生产级别的基于Spring的应用。 1.3 Java JSP技术 Java Server Pages (JSP) 是一种...
- **Quartz**: 企业级定时任务框架。 - **Spring Task**: Spring框架内置的支持。 **5.2 应用场景** - **定期执行任务**: 如数据备份、日志清理等。 - **触发器管理**: 支持复杂的时间表达式。 #### 六、多线程及...
- `create_quartz_mysql.sql`:用于创建 Quartz 定时任务所需的表结构。 - `create_repository_mysql.sql`:用于创建存储 Pentaho 元数据所需的表结构。 - `create_sample_datasource_mysql.sql`:用于创建示例...