`
dreamoftch
  • 浏览: 485577 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

使用spring 的Quartz 定时任务入门

阅读更多

 

这里必须的jar包:

spring.jar

quartz-all-1.6.0.jar

commons-collections-3.1.jar

jta.jar

 

然后将applicationContext.xml放到src下(位置自己决定),

 

web.xml:

<context-param>
     <param-name>contextConfigLocation</param-name>
     <!--  下面的classpath:**/applicationContext*.xml表示classpath下面任意位置一个以applicationContext开头的xml文件,
           如果是classpath*:xxxx则表示classpath下面的多个文件  -->
     <param-value>classpath:**/applicationContext*.xml</param-value>
</context-param>
<listener>
     <listener-class>
	 org.springframework.web.context.ContextLoaderListener
     </listener-class>
</listener>

 

 

然后自定义一个javabean(只有一个测试的test方法):

 

 

package spring.timer;

public class MyTimerTest {

	public void test(){
		System.out.println("method test executed ......");
	}
	
}

 

然后applicationContext.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"
		xmlns:tx="http://www.springframework.org/schema/tx"
		xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
				http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
	<bean id="target" class="spring.timer.MyTimerTest">
	</bean>
	<bean id="schedulerJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
   		<property name="targetObject" ref="target" />
   		<property name="targetMethod" value="test" />
   		<property name="concurrent" value="false" />
   	</bean>
	 <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean" >
          <property name="jobDetail" ref="schedulerJobDetail"/>
          <property name="cronExpression">
              <value>0/10 * * * * ?</value><!--10s执行一次,自己定义-->
          </property>
     </bean>
   	<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
		<property name="triggers">
			<list>
				<ref bean="cronTrigger" />
			</list>
		</property>
	</bean>
</beans>

 

 

 cron 表达式:

<!-- 

Cron 触发器利用一系列特殊字符,如下所示:

 

反斜线(/)字符表示增量值。例如,在秒字段中“5/15”代表从第 5 秒开始,每 15 秒一次。

 

问号(?)字符和字母 L 字符只有在月内日期和周内日期字段中可用。问号表示这个字段不包含具体值。

所以,如果指定月内日期,可以在周内日期字段中插入“?”,表示周内日期值无关紧要。

字母 L 字符是 last 的缩写。放在月内日期字段中,表示安排在当月最后一天执行。

在周内日期字段中,如果“L”单独存在,就等于“7”,否则代表当月内周内日期的最后一个实例。

所以“0L”表示安排在当月的最后一个星期日执行。

 

在月内日期字段中的字母(W)字符把执行安排在最靠近指定值的工作日。把“1W”放在月内日期字段中,表示把执行安排在当月的第一个工作日内。

 

井号(#)字符为给定月份指定具体的工作日实例。把“MON#2”放在周内日期字段中,表示把任务安排在当月的第二个星期一。

 

星号(*)字符是通配字符,表示该字段可以接受任何可能的值。

字段 允许值 允许的特殊字符

秒 0-59 , - * /

分 0-59 , - * /

小时 0-23 , - * /

日期 1-31 , - * ? / L W C

月份 1-12 或者 JAN-DEC , - * /

星期 1-7 或者 SUN-SAT , - * ? / L C #

年(可选) 留空, 1970-2099 , - * /

表达式意义

"0 0 12 * * ?" 每天中午12点触发

"0 15 10 ? * *" 每天上午10:15触发

"0 15 10 * * ?" 每天上午10:15触发

"0 15 10 * * ? *" 每天上午10:15触发

"0 15 10 * * ? 2005" 2005年的每天上午10:15触发

"0 * 14 * * ?" 在每天下午2点到下午2:59期间的每1分钟触发

"0 0/5 14 * * ?" 在每天下午2点到下午2:55期间的每5分钟触发

"0 0/5 14,18 * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发

"0 0-5 14 * * ?" 在每天下午2点到下午2:05期间的每1分钟触发

"0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44触发

"0 15 10 ? * MON-FRI" 周一至周五的上午10:15触发

"0 15 10 15 * ?" 每月15日上午10:15触发

"0 15 10 L * ?" 每月最后一日的上午10:15触发

"0 15 10 ? * 6L" 每月的最后一个星期五上午10:15触发

"0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发

"0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发

-->

 

 

 

Quartz + spring 定时任务常见错误总结



1.配了下spring-biz.xml,总是报错,
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'methodInvokingJobDetail' defined in class path resource [config/spring/spring-biz.xml]: Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError:org.quartz.JobExecutionException
Caused by:
java.lang.NoClassDefFoundError: org.quartz.JobExecutionException

只有spring.jar不行,要增加quartz-all-1.6.0.jar

2.
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'methodInvokingJobDetail' defined in class path resource [config/spring/spring-biz.xml]: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: org/apache/commons/collections/SetUtils
Caused by:
java.lang.NoClassDefFoundError: org/apache/commons/collections/SetUtils

这个要增加commons-collections-3.1.jar

3.
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.scheduling.quartz.SchedulerFactoryBean' defined in class path resource [config/spring/spring-biz.xml]: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: javax/transaction/UserTransaction
Caused by:
java.lang.NoClassDefFoundError: javax/transaction/UserTransaction

 

这个要增加jta.jar即可
分享到:
评论

相关推荐

    Java分布式Elastic-Job和Quartz定时任务课程(1.6G)

    1_什么事定时任务.mp4 2_为什么学习定时任务.mp4 3_定时任务技术发展趋势.mp4 4_主流定时任务框架优缺点和什么是分布式定时任务.mp4 5_环境搭建总体流程.mp4 6_前期准备-JDK.mp4 7_前期准备-Maven.mp4 8_前期准备-...

    quartz入门例子,spring集成配置使用

    Spring集成quartz跑定时任务实例 自己写的例子并为实现job 有测试的主函数,请参考http://www.blogjava.net/baoyaer/articles/155645.html 博客信息 看此代码,项目里分为两大块,com文件夹下 为上面博客相关学习...

    Quartz(作业调度)

    1.spring框架使用任务调度quartz的例子。 2.Web App用Quartz实现java schedule 3.详细讲解Quartz如何从入门到精通 4.用 Quartz 进行作业调度

    Spring Boot 2.X、Spring Cloud、Spring Cloud Alibaba、Dubbo、分布式.zip

    Spring Boot 专栏 基于 Spring Boot 2.X ...在带你快速学会 Job 任务的编写的同时,我还想告诉你还有 Quartz 单体、Quartz 集群、XXL-JOB 等等企业使用更多的调度平台。 ... 让我们一起愉快的挖坑,挖深坑,哇哈哈。

    基于 Spring Boot 2.X 版本的深度入门教程

    一个涵盖六个专栏:Spring Boot 2.X、Spring Cloud、Spring Cloud Alibaba、Dubbo、分布式消息队列...快速学会 Job 任务的编写的同时,我还想告诉你还有 Quartz 单体、Quartz 集群、XXL-JOB 等等企业使用更多的调度平台

    Spring boot+Mybatis整合实现增删改查(适合初学者入门必备也可以做脚手架开发)

    5.添加定时任务:不再使用作业自动调度框架Quartz实现作业调度,使用spring框架自带的调度器进行作业调度,简化了配置。@Scheduled是单线程的,每次最多只有一个作业在运行,如果调度时间到了作业还没执行完,就会...

    SpringBoot新手学习手册

    12.1、使用@Scheduled创建定时任务 47 12.2、使用@Async实现异步调用 47 12.3、自定义参数 49 12.4、多环境配置 50 12.5、修改端口号 50 12.6、SpringBoot yml 使用 50 12.7、SpringBoot整合拦截器 51 12.8、...

    java8源码-learn-demo:平时学习的小例子

    学习定时任务调度工具详解quartz demo-04-springboot SpringBoot入门 demo-05-spring-annotation spring中常用注解 demo-06-java8 java8的一些新特性 demo-07-netty-tomcat 基于netty实现tomcat demo-08-netty-im ...

    基于ssh+layui的java快速开发框架源码.rar

    该框架具备一整套完整的权限管理系统,代码简洁,容易入门,方便您进行二次开发。 数据库sql文件:DB文件夹下 前端技术: layUi+jquery 后端技术: SpringMvc、 Spring、Hibernate、 ehcache、 ...定时任务

    LaySSH快速开发框架

    定时任务 ### 系统截图 ![输入图片说明](http://116.62.213.179/laysq/sq/images/1.png "在这里输入图片标题") ![输入图片说明](http://116.62.213.179/laysq/sq/images/2.png "在这里输入图片标题") ![输入图片...

    J2eeFAST企业级快速开发平台 v2.0.8

    定时任务: Quartz 数据库连接池:Druid 1.10.1 数据库: Mysql5.7 分布式缓存数据库: Redis 4.0.9 工具类:Hutool 4.5.8 工作流引擎:flowable 6.4.2 J2eeFAST安装教程 1、需要准备环境Mysql5.7以上、JDK1.8、Maven3.3...

    J2eeFAST企业级快速开发平台-其他

    J2eeFAST是一个Java EE企业级快速开发平台,基于经典技术组合(Spring Boot、Spring MVC、Apache Shiro、MyBatis-Plus、Freemarker、Bootstrap、AdminLTE)采用经典开发模式,让初学者能够更快的入门并投入到团队...

Global site tag (gtag.js) - Google Analytics