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+springMVC+mybatis+quartz动态定时任务
spring4.2.2版本,springmvc,mybatis+quartz2.2
基于SSM+quartz的定时任务管理demo
利用quartz动态操作定时任务,所有配置信息扔到数据库合理管理,同时把运行日志自动添加数据库表中。
NULL 博文链接:https://weihaimail.iteye.com/blog/2268686
NULL 博文链接:https://elfasd.iteye.com/blog/1908001
Spring4.3.15 + Quartz2.2 + Spring MVC管理可以管理任务的暂停,启动、立即执行一次、根据表达式重新调度等功能
在spring+hibernate的框架中定时操作数据库,主要是拿到sessionFactory,不会出现no session 和transaction no-bound等问题,由sessionFactory完成对数据的操作,有些包是没有用的,有兴趣的可以自己删除掉
spring+quartz的定时任务,希望能帮到大家!
Spring2.5+Quartz定时任务简单例子web工程 myeclipse 项目开发的,可直接导入运行
基于spring-boot+quartz的CRUD任务管理系统源码+项目说明.zip基于spring-boot+quartz的CRUD任务管理系统源码+项目说明.zip基于spring-boot+quartz的CRUD任务管理系统源码+项目说明.zip基于spring-boot+quartz的CRUD...
上一次传错了资源了,这个是正确的,包含quartz动态定时任务的
Spring+Quartz实现定时任务的配置方法.rar
Spring + quartz 定时任务修改定时时间不重启服务
里面包含了两个工程项目: 1.Java project工程(含jar包,JDK1.6)。 是spring+quartz的任务调度实例。 2.Java web工程(含jar包,JDK1.7)。 spring+mybatis+quartz任务调度实例
spring3.0+quartz-1.6.0实现定时任务
Spring Boot+Apache Shiro+Spring MVC+MyBatis+Quartz+Druid DEMO
spring3.2.4+quartz2.2.0 定时调度例子,能正常运行的程序
spring+quartz定时小例子,架包+文档 我自己整理的
动态添加、删除、暂停、恢复、更新JOB 1.除了合法性,必填校验,功能基本都实现。 2.cronExpression 字段 输入 job 执行的间隔秒,建议2秒执行一次,好测试,看效果。 3.暂停为暂停JOB。 4.... 5.... 6.... 7....