在一些项目里面比如进销存系统,对一些过期图片的定时清理或者库存不足发出预警提示,就需要用到定时调度技术。
每当经过一段时间,程序会自动执行,就是定时调度。如果要使用定时调度,则必须保证程序始终运行才行哦,也就是说定时调度是在程序之外又启动了一个新的线程。那么怎样才能实现定时调度呢?
方案一:可以使用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分钟,再次被执行,后面循环执行。
关注他:
相关推荐
NULL 博文链接:https://firezhfox.iteye.com/blog/1770575
任务调度的持久化功能,即新增修改删除之类的功能,这必须得要有的,不然都不知道后台都有什么作业在跑
spring-boot-quartz-demo, 使用Quartz框架的样例 Spring Boot 应用程序 spring-boot-quartz-demo使用Quartz框架的样例 Spring Boot 应用程序基于 https://gist.github.com/jelies/5085593 附加功能( 断点,失火处理...
quartz.jar,spring-context-support.jar(spring多任务定时bag)
内容需求,依赖弹簧靴石英调度器经过Spring Boot测试(直到1.0.2)1.3.8、1.4.6、1.5.3、1.5.6, (自1.0.3起)1.4.6、1.5.10、1.5.16、1.5.17用法< dependency>< groupId>de.chandre.quartz</ groupId>< artifactId...
关于一个手势解锁和一个画板 的两个小程序,对应博客地址:http://blog.csdn.net/nsryan
java运行依赖jar包
spring-context-support-4.2.2和quartz-2.2.3所需Jar包 spring-context-support-4.2.2和quartz-2.2.3所需Jar包
quartz-1.8.4 定时调度 timer quartz.jar
本项目来源与网络,本人对项目...直接通过mvn 倒入项目,在Spring-quartz-demo\src\main\webapp\sql 有sql 建立数据库,表 启动tomcat 直接访问http://localhost:8080/Spring-quartz-demo/task/taskList.htm 就可以使用
Quartz--JAVA定时任务\Java应用:Java调度任务和Spring Quartz (1)
spring-boot-quartz定时任务
spring-boot-2.1.3.RELEASE.jar -autoconfigure- -devtools- -maven-plugin- -starter- -starter-jdbc- -starter-json- -starter-logging- -starter-test- -starter-tomcat- -starter-web- -test- -test-...
该压缩包内包含两个quartz的jar包, 分别是quartz-1.6.0.jar和quartz-all-1.6.0.jar
spring3.0+quartz-1.6.0实现定时任务
spring整合quartz动态定时任务demo-spring-quartz-demo
Quartz 是个开放源码项目,提供了丰富的作业调度集。在这篇文章中,软件工程师 Michael Lipton 和IT 架构师 Soobaek Jang 对 Quartz API 进行了介绍,从对框架的一般概述开始,并以一系列展示 Quart 基本特性的代码...
Spring中集成的一个定时任务调度器,以备以后使用
本人花费多日时间,亲测有效。所需文件代码完整,只需导入常用开发IDE和mysql数据库即可正常使用。
所需jar如下: spring-beans-3.2.4.RELEASE.jar spring-core-3.2.4.RELEASE.jar spring-expression-3.2.4.RELEASE....quartz-all-2.1.7.jar spring-tx-3.2.4.RELEASE.jar slf4j-log4j12-1.6.1.jar slf4j-api-1.6.1.jar