一、在 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。大容器整合小容器,小容器是一个独立的单元,简洁明了。

最新文章

  1. DevExpress v16.1.5图表、Dashboard等多个控件API发生变化
  2. IOS开发基础知识--碎片49
  3. LoadRunner函数示例:lr_paramarr_random()
  4. TOJ3136
  5. HOLOLENS的DEVICE POTAL连接和安装
  6. 再谈Jquery Ajax方法传递到action 【转载】
  7. JRE和JDK
  8. 【有奖】NOIP普及组模拟赛 个人邀请赛 乐多赛
  9. VS2015使用技巧 为什么我们可以输入cw后按两下tab键出现console.writeline
  10. FTP主/被动模式的原理
  11. Pass value from child popup window to parent page window using JavaScript--reference
  12. iOS 应用数据存储的常用方式
  13. selenium python presence_of_element_located vs visibility_of_element_located
  14. 【开源java游戏框架libgdx专题】-02-Eclipse Gradle 环境安装
  15. 第6组UI组件:ViewAnimator及其子类
  16. Java常用类(三)之StringBuffer与StringBuidler
  17. OC学习15——文件I/O体系
  18. Dynamics CRM 开启EmailRouter日志记录
  19. 探索JS引擎工作原理
  20. pycharm 01

热门文章

  1. MySQL: Fabric 搭建 HA
  2. 如何手动安装MySql
  3. CentOS 7 修改主机名
  4. transient关键字的用法
  5. IOCP Internals
  6. 《Effective Java》学习笔记——积累和激励
  7. CSS3 nth 伪类选择器
  8. Android测试网络是否连接
  9. C++11网络编程
  10. Python正则表达式中的re.S