dubbo2.5-spring4-mybastis3.2-springmvc4-mongodb3.4-redis3.2整合(九)之 spring中定时器quartz的整合
2017-02-08 18:01
821 查看
今天来总结一下。Spring中quartz的使用。
作业类即普通的java类,不需要继承自任何基类。
注意:推荐使用第二种方式,因为这样所以的类都是普通类,不需要事先区别对待。
每到指定时间则触发一次,在Quartz中对应的调度器为:org.springframework.scheduling.quartz.CronTriggerBean
注意:并非每种任务都可以使用这两种触发器,如java.util.TimerTask任务就只能使用第一种。Quartz和spring task都可以支持这两种触发条件。
按照顺序为:
秒 0-59
分钟 0-59
小时 0-23
天 (月)1-31
月 0-31
天 (星期)1-7
年份 1970- 递增
给几个例子:
基本上就这么多了。
代码地址:
1、Quartz是什么?
Quartz 是一个开源的作业调度框架,它完全由 Java 写成,并设计用于 J2SE 和 J2EE 应用中。它提供了巨大的灵活性而不牺牲简单性。你能够用它来为执行一个作业而创建简单的或复杂的调度。2、Quartz的分类
2.1、按照作业类的继承方式来分,可以分为两类
作业类需要继承自特定的作业类基类,如Quartz中需要继承自org.springframework.scheduling.quartz.QuartzJobBean;java.util.Timer中需要继承自java.util.TimerTask。作业类即普通的java类,不需要继承自任何基类。
注意:推荐使用第二种方式,因为这样所以的类都是普通类,不需要事先区别对待。
2.2、按照任务调度的触发时机来分,这里主要是针对作业使用的触发器,主要有以下两种:
每隔指定时间则触发一次,在Quartz中对应的触发器为:org.springframework.scheduling.quartz.SimpleTriggerBean每到指定时间则触发一次,在Quartz中对应的调度器为:org.springframework.scheduling.quartz.CronTriggerBean
注意:并非每种任务都可以使用这两种触发器,如java.util.TimerTask任务就只能使用第一种。Quartz和spring task都可以支持这两种触发条件。
3、添加Quartz依赖
<!-- 定时器的使用 --> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.2.3</version> </dependency>
4、Spring中quartz的使用(作业类即普通的java类的使用)
4.1、定义作业类
package com.lidong.dubbo.core.util.quartz; import java.text.SimpleDateFormat; import java.util.Date; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @项目名称:lidong-dubbo * @类名:SpringQtz * @类的描述: 作业类的调度 * @作者:lidong * @创建时间:2017/2/8 下午5:41 * @公司:chni * @QQ:1561281670 * @邮箱:lidong1665@163.com */ public class SpringQtz { static Logger logger = LoggerFactory.getLogger(SpringQtz.class); private static int counter = 0; /** * 调度的方法 */ public void execute() { long ms = System.currentTimeMillis(); logger.info(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date(ms))+" "+"(" + counter++ + ")"); } }
4.2、在Spring中配置作业类
<!-- 要调用的工作类 --> <bean id="SpringQtzJob" class="com.lidong.dubbo.core.util.quartz.SpringQtz" />
4.3 、定义调用对象和方法
<!-- 定义调用对象和调用对象的方法 --> <bean id="SpringQtzJobMethod" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <!-- 调用的类 --> <property name="targetObject"> <ref bean="SpringQtzJob" /> </property> <!-- 要执行的方法名称 --> <property name="targetMethod"> <value>execute</value> </property> </bean>
4.4、配置调度触发器
<!-- ======================== 调度触发器 ======================== --> <bean id="CronTriggerBean" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <!--作业详情 --> <property name="jobDetail" ref="SpringQtzJobMethod"></property> <!-- cron表达式 --> <property name="cronExpression" value="0/10 * * * * ?"></property> </bean>
4.5、配置调度工厂
<!-- ======================== 调度工厂 ======================== --> <bean id="SpringJobSchedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="CronTriggerBean" /> <ref bean="CronTriggerBean1" /> </list> </property> </bean>
5、quartz的cron 表达式
一个cron表达式至少有6个,是按照空格来分割的时间元素。按照顺序为:
秒 0-59
分钟 0-59
小时 0-23
天 (月)1-31
月 0-31
天 (星期)1-7
年份 1970- 递增
给几个例子:
"30 * * * * ?" 每半分钟触发任务 "30 10 * * * ?" 每小时的10分30秒触发任务 "30 10 1 * * ?" 每天1点10分30秒触发任务 "30 10 1 20 * ?" 每月20号1点10分30秒触发任务 "30 10 1 20 10 ? *" 每年10月20号1点10分30秒触发任务 "30 10 1 20 10 ? 2011" 2011年10月20号1点10分30秒触发任务 "30 10 1 ? 10 * 2011" 2011年10月每天1点10分30秒触发任务 "30 10 1 ? 10 SUN 2011" 2011年10月每周日1点10分30秒触发任务 "15,30,45 * * * * ?" 每15秒,30秒,45秒时触发任务 "15-45 * * * * ?" 15到45秒内,每秒都触发任务 "15/5 * * * * ?" 每分钟的每15秒开始触发,每隔5秒触发一次 "15-30/5 * * * * ?" 每分钟的15秒到30秒之间开始触发,每隔5秒触发一次 "0 0/3 * * * ?" 每小时的第0分0秒开始,每三分钟触发一次 "0 15 10 ? * MON-FRI" 星期一到星期五的10点15分0秒触发任务 "0 15 10 L * ?" 每个月最后一天的10点15分0秒触发任务 "0 15 10 LW * ?" 每个月最后一个工作日的10点15分0秒触发任务 "0 15 10 ? * 5L" 每个月最后一个星期四的10点15分0秒触发任务 "0 15 10 ? * 5#3" 每个月第三周的星期四的10点15分0秒触发任务
基本上就这么多了。
代码地址:
相关文章推荐
- dubbo2.5-spring4-mybastis3.2-springmvc4-mongodb3.4-redis3.2整合(十一)之 spring中定时器quartz的整合续集(Quartz集群配置)
- dubbo2.5-spring4-mybastis3.2-springmvc4-mongodb3.4-redis3.2整合(四)Spring AOP中使用log4j实现http请求日志入mongodb
- [置顶] dubbo2.5-spring4-mybastis3.2-springmvc4-mongodb3.4-redis3.2整合(一)Dubbo的使用
- dubbo2.5-spring4-mybastis3.2-springmvc4-mongodb3.4-redis3.2整合(三)使用Spring AOP实现mysql的读写分离
- dubbo2.5-spring4-mybastis3.2-springmvc4-mongodb3.4-redis3.2整合(五)Spring中spring-data-redis的使用
- dubbo2.5-spring4-mybastis3.2-springmvc4-mongodb3.4-redis3.2整合(七)RabbitMQ工作原理和Spring的集成
- dubbo2.5-spring4-mybastis3.2-springmvc4-mongodb3.4-redis3.2整合(十二)之 spring中RabbitMQ延迟队列的实现
- dubbo2.5-spring4-mybastis3.2-springmvc4-mongodb3.4-redis3.2整合(六)Spring中Redis的缓存的使用
- dubbo2.5-spring4-mybastis3.2-springmvc4-mongodb3.4-redis3.2整合(八)SpringMVC上传文件到FastDFS
- [置顶] dubbo2.5-spring4-mybastis3.2-springmvc4-mongodb3.4-redis3.2整合(二)之 JDBC连接池、监控组件 Druid
- dubbo2.5-spring4-mybastis3.2-springmvc4-mongodb3.4-redis3(十)之Spring MVC中使用 Swagger2 构建Restful API
- dubbo2.5-spring4-mybastis3.2-springmvc4-logback-ELK整合(十三) logback+ELK日志收集服务器搭建
- springmvc3.2+spring+hibernate4全注解方式整合(三)
- maven整合:最新ssm框架实现spring4.2,springmvc4.2,mybatis3.2
- quartz-2.2.2.jar + spring 3.2 定时器配置
- mongodb 3.2 实战(三)整合Spring Data MongoDB
- SSM整合最新版,spring4.2,springmvc4.2,mybatis3.2整合
- 【spring配置】——spring整合Quartz定时器
- [置顶] redis3.2 学习记录 springmvc +jredis +redis 整合
- Dubbo+Spring整合 springmvc+mybatis+shiro整 redis分布式缓存