上一篇将了quartz框架的使用,spring同样也提供了对quartz的集成。这次就尝试一下在spring中集成quartz。

要在spring中使用job,Trigger和Scheduler,就要在spring中配置这3个bean。

同样用上一篇的例子:对于job的配置,十分简单,在applicationContext.xml中加入这一一句

<!-- quartz要调用的工作类 -->

<bean id="quartzJob" class="cn.edu.gdut.quartz.HelloQuartz"></bean>

这样,一个job就配置到了spring里面了。

对于JobDetail部分:

这里spring提供了更加灵活的方式,对于一个实现的org.quartz.Job接口的job来说以HelloQuartz来说,spring提供了JobDetailBean来实现调用,配置方式如下

<bean name="jobDatail" class= "org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass" value=" quartzJob " />
</bean>

这样,一个JobDetail就配置好了。

另外,spring还提供了一种吧没有实现org.quartz.Job接口的类配置的成为一个作业的方法。

package cn.edu.gdut.quartz;

public class DataService {

    /**
* 定期推送服务
*/
public void push(){
//TODO 推送逻辑
}
}

比如对于以上的一个类,配置成一个bean

<!-- quartz要调用的工作类 -->

<bean id="dataJob" class="cn.edu.gdut.quartz.DataService"></bean>

配置该bean的方式有些不同,因为没有实现org.quartz.Job类,我们要指定当触发事件到来时要调用这个实例的哪个方法

在spring中配置如下:

<bean id="dataJobDatail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!-- 调用的类 -->
<property name="targetObject">
<ref bean="dataJob"/>
</property>
<!-- 调用类中的方法 -->
<property name="targetMethod">
<value>push</value>
</property>
</bean>

这样,同样也可以实现作业调用,其实从spring的命名也可以看出来这是指定调用方法的一个JobDetail。

然后是配置触发器

 <bean id="cTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="jobDatail"/>
</property>
<!-- cron表达式 -->
<property name="cronExpression">
<value>*/10 * * * * ?</value>
</property>
</bean>
 <bean id="dataTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="datJobDatail"/>
</property>
<!-- cron表达式 -->
<property name="cronExpression">
<value>*/20 * * * * ?</value>
</property>
</bean>

然后是调度器部分

<bean id="easyScheduler" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
  <property name="triggers">
  <list>
    <ref bean="cTrigger"/>
<ref bean ="dataTrigger">
  </list>
  </property>
</bean>

调度器部分,如果设置了lazy-init为false后,则启动IoC容器的时候不需要人为干预就能启动调度任务了。

设置为true后要手动获取这个调度器的bean才会启动调度任务。

ApplicationContext context = new ClassPathXmlApplicationContext(
"application.xml");
context.getBean(easyScheduler);

这样,任务就启动了,剩下的工作也交个quartz啦。

quartz与spring进行集成的更多相关文章

  1. Quartz与Spring Boot集成使用

    上次自己搭建Quartz已经是几年前的事了,这次项目中需要定时任务,需要支持集群部署,想到比较轻量级的定时任务框架就是Quartz,于是来一波. 版本说明 通过搜索引擎很容易找到其官网,来到Docum ...

  2. 定时任务quartz与spring的集成

    我想要在spring的集成框架中使用spring , 暂时采用quartz 根据下面的几篇博客实现了(懒得说了,直接丢链接): Quartz实现动态定时任务 Spring 3整合Quartz 2实现定 ...

  3. Quartz与Spring集成

    关于Quartz的基本知识,这里就不再多说,可以参考Quartz的example. 这里主要要说的是,个人在Quartz和Spring集成的过程中,遇到的问题和个人理解. 首先来说说个人的理解: 1. ...

  4. Quartz 在 Spring 中如何动态配置时间--转

    原文地址:http://www.iteye.com/topic/399980 在项目中有一个需求,需要灵活配置调度任务时间,并能自由启动或停止调度. 有关调度的实现我就第一就想到了Quartz这个开源 ...

  5. spring中集成shiro

    Shiro的组件都是JavaBean/POJO式的组件,所以非常容易使用Spring进行组件管理,可以非常方便的从ini配置迁移到Spring进行管理,且支持JavaSE应用及Web应用的集成. 在示 ...

  6. spring.net 集成nhibernate配置文件(这里暴露了GetCurrentSession 对于 CurrentSession unbond thread这里给出了解决方法)

    我这里主要分成了两个xml来进行spring.net管理实际情况中可自己根据需要进行分类 Dao2.xml <?xml version="1.0" encoding=&quo ...

  7. 在Spring下集成ActiveMQ

    1.参考文献 Spring集成ActiveMQ配置 Spring JMS异步发收消息 ActiveMQ 2.环境 在前面的一篇ActiveMQ入门实例中我们实现了消息的异步传送,这篇博文将如何在spr ...

  8. Quartz在Spring中动态设置cronExpression (spring设置动态定时任务)

    什么是动态定时任务:是由客户制定生成的,服务端只知道该去执行什么任务,但任务的定时是不确定的(是由客户制定).      这样总不能修改配置文件每定制个定时任务就增加一个trigger吧,即便允许客户 ...

  9. Quartz与Spring整合进行热部署的实现(一)

    先来几张实现图 任务管理页 新建任务管理.目前实现叫简单的需求...若各位同学要实现复杂的设计...quartz都有提供强大的支持.小弟目前的需求做到这已经够用了. 接下来.我们如何实现quartz的 ...

随机推荐

  1. 如何在网页中添加“QQ交流”

    今天在撸码时,想到这个问题,有些网页中会有诸如,那么如何在网页添加"QQ交谈"? 第一步.登录QQ: 第二步.打开网页:QQ推广,启用QQ通讯组件: 第三步.选择组件样式,设置提示 ...

  2. 大熊君{{bb}}移动开发之旅(第一季)

    一,开篇概述 Hi,大家好!大熊君又和大家见面了,从这篇文章开始我要和大家聊聊移动开发的话题,这部分文章共8季,分别从不同角度来讲解什么是移动开发?移动开发涉及到什么方面的技术点以及移动开发中的常见问 ...

  3. nyoj 71 独木舟上的旅行(贪心专题)

    独木舟上的旅行 时间限制:3000 ms  |  内存限制:65535 KB 难度:2   描述 进行一次独木舟的旅行活动,独木舟可以在港口租到,并且之间没有区别.一条独木舟最多只能乘坐两个人,且乘客 ...

  4. CSS高效开发实战:CSS 3、LESS、SASS、Bootstrap、Foundation --读书笔记(2)CSS3利用图层叠加实现多背景

    CSS 3允许设置多个背景图片,每个背景图片占一层,层的上下按照在CSS中书写的顺序来定,最先写的背景在最上层,每层图片定义使用英文逗号隔开. 例如下面的代码: background:url(http ...

  5. 02第一个OC程序

    一.打开XCode4.6.3,新建项目 二.选择Application下的命名行项目 三.输入项目名称,选择Foundation框架创建项目,点击Next 四.二话不说.点击Run.启动我们创建的项目 ...

  6. 用Bitbucket搭建博客初探

    本博客是搭建在GitHub上的静态博客,但是由于GitHub免费账户不能创建私有仓库,导致有些东西不想放在GitHub上. 前两天,在免费资源部落上发现了Bitbucket,它和GitHub类似,也是 ...

  7. TCP/IP三次握手和HTTP过程

    1.TCP连接 手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接.TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在"无差别&qu ...

  8. stack.sh failing giving error "g-api did not start"

    same issue i faced , tried with ./unstack.sh and ./clean.sh also but couldn't fix the issue.Followin ...

  9. 【ASP.NET】利用Nuget打包package——GUI方式

    GUI方式 通过GUI的方式,可以下载如下的软件 NuGetPackageExplorer   打包dll 1.打开软件,在Package Content处点击右键 ,选择Add Lib 2.在lib ...

  10. vim技巧

    (三)多窗口操作 改变高度:res +n(增加n行的高度)n ctrlw  +/-改变宽度:vertical res +n(增加n列的宽度)n ctrl w >/< (一)缩进 vim提供 ...