`
ITsource源代码
  • 浏览: 43363 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Spring进阶-怎样集成定时调度Quartz

阅读更多

 

 


 

    在一些项目里面比如进销存系统,对一些过期图片的定时清理或者库存不足发出预警提示,就需要用到定时调度技术。

 

    每当经过一段时间,程序会自动执行,就是定时调度。如果要使用定时调度,则必须保证程序始终运行才行哦,也就是说定时调度是在程序之外又启动了一个新的线程。那么怎样才能实现定时调度呢?

 

   

 

    方案一:可以使用JDK自带的java.util.Timer对象。可以创建定制的timer或者调用某些方法的timer。包装timer的工作由Spring TimerFactoryBean完成,不过这种方法不能准确设置一个起始时间。

 

 

 

    方案二:使用OpenSymphony Quartz框架。Quartz是OpenSymphony开源组织在Job scheduling领域又 一个开源项目,网站地址:http://www.quartz-scheduler.org;它可以与J2EE与J2SE应用程序相结合也可以单独使用。 Quartz可以用来创建简单或为运行好几万个Jobs这样复杂的程序。(Struts2里面的WebWork就是来自OpenSymphony。)

 

 

 

    Quartz使用Trigger, Job以及JobDetail等对象来进行各种类型的任务调度。为了让基于Spring的应用程序方便使用,Spring提供了一些类来简化quartz的用法。

 

 

 

    开发步骤:

 

    一、加入spring和quartz相关jar文件

 

     

 

    二、Spring配置文件

 

    1.Spring配置文件一:早期配置,麻烦

 

<?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"> <!-- 总管理类 如果将lazy-init='false'那么容器启动就会执行调度程序 -->

 

<bean id="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">

 

<property name="triggers">

 

<list>

 

<ref bean="doTime" />

 

</list>

 

</property>

 

</bean>

 

<!-- 定义触发时间 -->

 

<bean id="doTime" class="org.springframework.scheduling.quartz.CronTriggerBean">

 

<property name="jobDetail">

 

<ref bean="jobtask" />

 

</property>

 

<property name="cronExpression">

 

<!-- cron表达式:在每天早上8点到晚上8点期间每1分钟触发一次 -->

 

<!-- <value>0 0/1 8-20 * * ?</value> -->

 

<!-- cron表达式:每5分钟触发一次 -->

 

<value>0 0/5 * * * ?</value>

 

</property>

 

</bean>

 

<!-- 定义调用对象和调用对象的方法 -->

 

<bean id="jobtask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">

 

<!-- 调用的类 -->

 

<property name="targetObject" ref="quartzJob" />

 

<!-- 调用类中的方法名称 -->

 

<property name="targetMethod">

 

<value>work</value>

 

</property>

 

</bean>

 

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

 

<bean id="quartzJob" class="cd.itsource.pss.service.impl.QuartzJobServiceImpl">

 

<property name="baseDao" ref="baseDao" />

 

</bean>

 

 

 

</beans>

 

 

 

    2.Spring配置文件二:加入spring命名空间,简化配置,强焊啊。原理就是在上面配置文件一的基础上spring再次做了一次封装,从而简化配置(具体可以看spring-task.xsd文件)。

 

<?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:task="http://www.springframework.org/schema/task"

 

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd

 

http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd">

 

 

 

<!-- cron表达式:在每天早上8点到晚上8点期间每1分钟触发一次 -->

 

<!--value>0 0/1 8-20 * * ?</value -->

 

<!-- cron表达式:每1分钟触发一次 -->

 

<!-- <value>0 0/1 * * * ?</value> -->

 

<!-- cron表达式:每天AM3点钟触发一次 -->

 

<!-- <value>0 0 3 * * ?</value> -->

 

 

 

<task:scheduled-tasks>

 

<!-- 执行quartzJob里面的work方法,执行频率是cron表达式 -->

 

<task:scheduled ref="quartzJob" method="work" cron="0 0/1 * * * ?" />

 

</task:scheduled-tasks>

 

 

 

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

 

<bean id="quartzJob" class="cn.itsource.pss.service.impl.QuartzJobServiceImpl">

 

<property name="baseDao" ref="baseDao" />

 

</bean>

 

 

 

</beans>

 

 

 

    三、Junit

 

    系统时间跑到整分的时候上面service的work方法自动被执行,间隔1分钟,再次被执行,后面循环执行。

 

     

 

 

    关注他

 

          

分享到:
评论

相关推荐

    springboot+quartz 动态化配置定时任务

    通过整合SpringBoot和Quartz,我们可以利用Spring的自动配置能力,方便地在Spring应用中集成定时任务功能。 二、Quartz动态配置 1. 引入依赖:首先,在`pom.xml`文件中引入SpringBoot的SpringBoot-starter-quartz...

    spring-boot-study-master.zip

    在Spring Boot中集成Quartz,可以方便地管理和调度定时任务。 8. **Scheduling任务调度**: Spring Boot内置了Task Scheduling,允许开发者定义并执行后台任务,无需额外引入Quartz等外部库,简化了任务调度的配置...

    Spring整合Quartz

    Spring框架是Java领域中极为重要的应用框架,而Quartz则是一个功能强大的任务调度库,能够帮助我们实现定时任务的管理。将Spring与Quartz结合使用,可以充分利用Spring的依赖注入(DI)和管理能力,使定时任务的配置...

    web项目集成quartz实例(9个)

    最后一个文件可能涵盖了高级特性,比如使用 Quartz 的表达式调度,或者集成Spring框架,利用Spring的依赖注入和管理功能简化Quartz的配置和使用。 通过以上对每个文件名的解读,我们可以看到Quartz集成的全过程,...

    Spring定时任务的简单例子

    Spring定时任务支持更多的功能,比如任务执行的并发控制、任务执行的监听器、以及使用Quartz等第三方调度库进行更复杂的任务调度。 总结,Spring定时任务为开发者提供了方便的API和注解,使我们可以轻松地在Java...

    Srping Quartz 资料多多

    Spring Quartz 是一个强大的任务调度框架,它允许开发者在Spring应用中定义和执行定时任务。这个压缩包包含了关于Spring Quartz的丰富资源,可以帮助我们深入理解和掌握这个框架。 首先,"Quartz开发指南.pdf" 是一...

    定时任务框架学习资料下篇

    此外,第11章"轻松整合-Quartz的3种常用整合方式演练"将展示如何在Spring、Spring Boot等应用中集成Quartz,实现灵活的定时任务管理。 接着,我们转向ElasticJob,这是一个分布式任务调度框架,源自LinkedIn的...

    基于Spring Boot + Quartz 的分布式任务调度系统+项目源码+文档说明+代码注释

    2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。...

    基于Spring Boot的社区论坛项目 SSM、Redis、Kafka、Quartz、Spring +源代码+文档说明

    - Quartz:定时调度框架 - Nginx - Thymeleaf:模板引擎 - Caffeine:Java本地缓存库 - MySQL - 七牛云:第三方文件存储服务 ### 各个功能模块所对应的技术点 ![功能模块对应的技术点]...

    SpringBoot2QuartzTest:Quartz测试

    在IT行业中,Spring Boot是一个非常流行的微服务框架,...通过上述步骤,我们可以快速地在Spring Boot应用中配置和测试Quartz任务,实现灵活的定时任务调度。在实际项目中,根据业务需求,可以进行更深入的定制和优化。

    Quartz,EJB资料

    进阶使用时,还可以涉及集群支持、持久化存储以及与Spring等框架的集成。 为了提高EJB的访问效率,可以使用本地引用代替远程引用。本地引用不涉及网络通信,因此访问速度更快,适合于同一个应用内的组件通信。对于...

    尚硅谷2018最新SpringBoot 上下 核心技术和整合,SpringCloud教学视频

    4. **定时任务**:讲解Quartz或Spring Task的使用,实现定时任务的调度。 5. **微服务监控**:探讨Spring Boot Actuator,用于健康检查、指标收集和应用信息的暴露。 接下来,SpringCloud视频教程部分将带你进入...

    Spring Boot 学习笔记完整教程new

    11. **实现任务调度**:Spring Boot可以通过Spring Task或者Quartz等组件实现定时任务,调度应用程序执行周期性的任务。 12. **普通类调用Bean**:在非Spring管理的类中注入并使用Spring Bean,可以使用...

    SpringBoot学习笔记完整教程

    11. **实现任务调度**:Spring Boot 可以集成 Quartz 或者 Spring 自带的 TaskScheduler 进行定时任务调度。了解如何定义任务,设置执行周期,以及处理并发执行等复杂场景。 12. **普通类调用 Bean**:Spring Boot ...

    source of springdemo

    最后,Spring 支持消息传递和任务调度,如 JMS 和 Quartz。在 SpringDemo 中,如果涉及到这些功能,我们可以看到相关的配置和类,如消息生产者和消费者,或者定时任务的定义。 总的来说,SpringDemo 是一个综合展示...

    SpringBoot文档+Demo

    6. **任务调度(Task Scheduling)**: Spring Boot集成Quartz或Spring Task进行定时任务的管理。 这个资源包中的文档和Demo将覆盖以上所述的诸多知识点,通过学习和实践,你将能掌握Spring Boot的精髓,提升开发...

    毕设项目基于SpringBoot+Vue的轻量级定时任务管理系统源码+数据库+项目说明(含前端+后端).zip

    毕设项目基于SpringBoot+Vue的轻量级定时任务管理系统源码+数据库+项目说明(含前端+后端).zip 【1】项目代码完整且功能都验证ok,确保稳定可靠运行后才上传。欢迎下载使用!在使用过程中,如有问题或建议,请及时...

    jboot开发资源

    - **定时任务**:提供Quartz定时任务框架,方便定时任务的管理和调度。 3. **Jbootdemo-master项目详解** - **项目结构**:该项目通常包含src/main/java、src/main/resources等标准Maven目录,以及pom.xml配置...

    企业级应用项目,springmvc+nutz+redis+rabbitmq+quartz+shiro

    在本项目中,"企业级应用项目,springmvc+nutz+redis+rabbitmq+quartz+shiro",开发者采用了一系列高级技术构建了一个具备高可扩展性和低耦合度的系统,旨在提供一个适用于有一定Java基础的学习者进行实践和进阶的...

    Java全栈相关的【知识技术解决方案难题面试题】知识库

    - **调度框架**:Quartz、CronTrigger,实现定时任务。 5. **数据结构与算法**: - **基本数据结构**:数组、链表、栈、队列、树(二叉树、红黑树等)、图。 - **排序与查找**:冒泡排序、插入排序、快速排序、...

Global site tag (gtag.js) - Google Analytics