Quartz —— Spring 环境下的使用
一、在 Spring 环境下 Quartz 的使用超级简单。
二、具体使用
1.添加对应的 spring-quartz 的配置文件。
2.新建要执行定时任务的目标类和目标方法,不需要继承 Job 接口。如:
/**
* @author solverpeng
* @create 2016-09-26-10:21
*/
public class MyJob2 { public void targetMethod() {
System.out.println("hello world, quartz, data:" + new Date());
} }
3.在 spring-quartz.xml 文件中配置
(1)配置执行定时任务的目标类和目标方法。
(2)配置 JobDetail,需要指定目标类和目标方法。
(3)配置 Trigger,并在 Trigger 中指定 jobDetail,如果是 CronTrigger ,需要指定 Cron 表达式。
(4)配置 Scheduler,指定 trigger ,以及一些别的属性。
<?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"> <bean class="com.nucsoft.quartz.job.MyJob2" id="myJob"/> <!-- 配置 JobDetail -->
<bean class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean" id="jobDetail">
<property name="targetObject" ref="myJob"/>
<property name="targetMethod" value="targetMethod"/>
</bean> <!-- 配置 CronTrigger -->
<bean class="org.springframework.scheduling.quartz.CronTriggerFactoryBean" id="cronTrigger">
<property name="jobDetail" ref="jobDetail"/>
<property name="cronExpression" value="0/5 * * ? 9 *"/>
</bean> <!-- 配置 Scheduler -->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean" id="scheduler">
<property name="triggers">
<array>
<ref bean="cronTrigger"/>
</array>
</property>
<property name="quartzProperties">
<props>
<prop key="org.quartz.threadPool.threadCount">10</prop>
</props>
</property>
<property name="startupDelay" value="10"/>
</bean> </beans>
说明:Spring 进一步降低了使用 Quartz 的难度,为创建 Quartz 的 JobDetail,Trigger,Scheduler 提供了便利的 FactoryBean,以便能够在 Spring 容器中注入。
(1)通过 MethodInvokingJobDetailFactoryBean 来创建 JobDetail。
(2)通过 CronTriggerFactoryBean 来创建 Trigger。
(3)通过 SchedulerFactoryBean 来创建 Scheduler。
注意:
(1)Scheduler 中的属性 quartzProperties 可以指定 org\quartz\quartz.properties 文件中的 key。
(2)Scheduler 中的属性 startupDelay 指定容器启动多久后开始指定定时任务。
(3)第一次启动定时任务和第二次执行定时任务之间时间间隔与表达式定义不同是因为,第一次是启动定时器,第二次才是真正的执行定时任务。
4.测试
/**
* @author solverpeng
* @create 2016-09-26-10:31
*/
public class QuartzTest {
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("spring-quartz.xml");
} }
只需要启动容器即可。
三、总结
介绍了 Spring 环境下 Quartz 的使用,对比发现,在 Spring 下的使用更为简单,也学到了 Spring 整合第三方的内容时,大多是通过 FactoryBean 的方式,真正整合的是第三方
本身的容器,如 Shiro 的 SecurtyManager,也如 Quartz 的 Scheduler。大容器整合小容器,小容器是一个独立的单元,简洁明了。
Quartz —— Spring 环境下的使用的更多相关文章
- Shiro —— Spring 环境下的使用
一.使用 1.搭建基础环境 (1)导入 Spring 和 Shiro 的 Jar 包 正常导入 spring jar包 导入日志包 log4j-1.2.15.jar slf4j-api-1.6.1.j ...
- 在spring环境下集成ActiveMQ
1.参考文献 Spring集成ActiveMQ配置 Spring JMS异步发收消息 ActiveMQ 2.环境 在前面的一篇ActiveMQ入门实例中我们实现了消息的异步传送,这篇博文将如何在spr ...
- MyBatis在非Spring环境下第三方DataSource设置-Druid篇
首先在ITEye上面看到一个同标题文章,在此说明,此文并非转载自 http://iintothewind.iteye.com/blog/2069522 ,因为这篇文章根本就是错误的,照着上面做,工程可 ...
- Mybatis在非spring环境下配置文件中使用外部数据源(druidDatasource)
Spring环境下, MyBatis可以通过其本身的增强mybatis-spring提供的org.mybatis.spring.SqlSessionFactoryBean来注入第三方DataSourc ...
- MyBatis在Spring环境下的事务管理
MyBatis的设计思想很简单,可以看做是对JDBC的一次封装,并提供强大的动态SQL映射功能.但是由于它本身也有一些缓存.事务管理等功能,所以实际使用中还是会碰到一些问题--另外,最近接触了JFin ...
- Redis(十五)Redis 的一些常用技术(Spring 环境下)
一.Redis 事务与锁机制 1.Redis的基础事务 在Redis中开启事务的命令是 multi 命令, 而执行事务的命令是 exec 命令.multi 到 exec 命令之间的 Redis 命令将 ...
- 七年开发小结MyBatis 在 Spring 环境下的事务管理
MyBatis的设计思想很简单,可以看做是对JDBC的一次封装,并提供强大的动态SQL映射功能.但是由于它本身也有一些缓存.事务管理等功能,所以实际使用中还是会碰到一些问题——另外,最近接触了JFin ...
- 精讲RestTemplate第1篇-在Spring或非Spring环境下如何使用
一.什么是 RestTemplate? RestTemplate是执行HTTP请求的同步阻塞式的客户端,它在HTTP客户端库(例如JDK HttpURLConnection,Apache HttpCo ...
- Junit运行在Spring环境下
@RunWith(SpringJUnit4ClassRunner.class)让测试运行于Spring测试环境 @ContextConfiguration 用来指定加载的Spring配置文件的位置,会 ...
随机推荐
- C++常见笔试面试要点以及常见问题
1. C++常见笔试面试要点: C++语言相关: (1) 虚函数(多态)的内部实现 (2) 智能指针用过哪些?shared_ptr和unique_ptr用的时候需要注意什么?shared_ptr的实现 ...
- 原生JS实现-星级评分系统
今天我又写了个很酷的实例:星级评分系统(可自定义星星个数.显示信息) sufuStar.star();使用默认值5个星星,默认信息 var msg = [........]; sufuStar.sta ...
- 给缺少Python项目实战经验的人
我们在学习过程中最容易犯的一个错误就是:看的多动手的少,特别是对于一些项目的开发学习就更少了! 没有一个完整的项目开发过程,是不会对整个开发流程以及理论知识有牢固的认知的,对于怎样将所学的理论知识应用 ...
- 简单Linux命令学习笔记
1.查看进程 ps -ef | grep 关键字 /*关键字为服务名*/ netstat -unltp | grep 关键字 /*关键字为服务名或者是端口均可*/ 2.杀死进 ...
- μCos-ii学习笔记1_概述
一.μCos-ii _概述 网上关于μCosii的文章多不胜数,本人学习的过程中也参考了很多人的理解和想法,看的是卢有亮老师的<嵌入式实时操作系统-μC/OS原理与实践>(第2版),同时也 ...
- JS高级前端开发群加群说明及如何晋级
JS高级前端开发群加群说明 一.文章背景: 二. 高级群: 三. 加入方式: 四. 说明: 一.文章背景: 去年年初建了几个群,在不经意间火了,一直排在“前端开发”关键字搜索结果第一名.当然取得这 ...
- Membership三步曲之入门篇 - Membership基础示例
Membership 三步曲之入门篇 - Membership基础示例 Membership三步曲之入门篇 - Membership基础示例 Membership三步曲之进阶篇 - 深入剖析Pro ...
- ucos实时操作系统学习笔记——任务间通信(队列)
ucos操作系统中的queue机制同样使用了event机制来实现,其实和前面的sem,mutex实现类似,所不同的是对sem而言,任务想获得信号量,对mutex而言,任务想获得的是互斥锁.任务间通信的 ...
- 作为前端应当了解的Web缓存知识
缓存优点 通常所说的Web缓存指的是可以自动保存常见http请求副本的http设备.对于前端开发者来说,浏览器充当了重要角色.除此外常见的还有各种各样的代理服务器也可以做缓存.当Web请求到达缓存时, ...
- 一种简单,轻量,灵活的C#对象转Json对象的方案(续)
本文参考资料 一种简单,轻量,灵活的C#对象转Json对象的方案 [源码]Literacy 快速反射读写对象属性,字段 一段废话 之前我已经介绍了这个方案的名称为JsonBuilder,这套方案最大的 ...