- 浏览: 1592147 次
- 来自: 上海
文章分类
- 全部博客 (374)
- Java (101)
- Struts (54)
- Oracle (30)
- JavaScript (16)
- Spring (27)
- Hibernate (16)
- MyEclipse (3)
- JSF (1)
- FreeMarker (2)
- SiteMesh (2)
- JfreeChart (2)
- Ibatis (2)
- JSP (12)
- MyBatis (4)
- SWFupload (1)
- EJB (4)
- Jboss (4)
- WebService (2)
- Linux (16)
- Android (2)
- XML (6)
- Java 网络编程 (13)
- AXIS2 (1)
- FTP (1)
- Jswing (1)
- Socket (3)
- 杂文选集 (6)
- solr (2)
- PS (1)
- Tomcat (7)
- JDBC (9)
- Highcharts (1)
- maven (1)
- Nodejs (0)
- navicat (2)
- Exception (5)
- eclipse (3)
- jQuery (1)
- springMVC (4)
- MySQL (11)
- SVN (1)
- Sql Server (1)
- zookeeper (1)
- JVM (1)
- Groovy (2)
- Git (1)
- Nginx (1)
- DynamicReport (1)
- IDEA (2)
- JasperReports (1)
- Postgresql (2)
- Mac (1)
- gradle (1)
- 数据结构算法 (1)
最新评论
-
hpu145:
引用引用
java 千分位的添加和去除 -
被遗忘的下路:
少了个junit-4.8.2的包
SSH2整合完整案例(四十三) -
白天看黑夜:
java过滤emoji字符处理,希望能帮到你http://ww ...
emoji 表情图片解决方法 -
caipeiming:
这个挺好JavaScript实现input输入框控件只允许输入 ...
js 控制文本框只能输入中文、英文、数字等 -
双子树:
东西太好啦受教啊
Struts2 JSP中将list,set ,Map传递到Action然后<s:iterator>遍历(三十五)
Quartz是一个强大的企业级任务调度框架,Spring中继承并简化了Quartz
//在java使用quartz
//在spring中使用quartz
//使用MethodInvokingJobDetailFactoryBean 可以装配任何普通的bean中方法 不用继承
//使用JobDetailBean装配 业务
首先说 jar的问题 从Spring3.2.4才开始支持quartz-2.x 如果版本低于 3.2.4 需要导入 quartz-1.x,commons-collections-3.1.jar,jboss-transaction-api_1.1_spec-1.0.0.Final.jar(javax.transaction.UserTransaction.class)
//在java使用quartz
package quartz; import java.util.Date; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; /** * 定义quartz作业类 * 单独 使用quartz * */ public class BuzJob implements Job { private boolean isRunning=false; @Override public void execute(JobExecutionContext arg0) throws JobExecutionException { // TODO Auto-generated method stub if(!isRunning){ System.out.println(new Date()+" 作业被调度."); for (int s = 0; s < 100; s++) { System.out.println("作业完成"+(s+1)+"%"); try { Thread.sleep(1000); } catch (Exception e) { e.printStackTrace(); } } System.out.println(new Date()+" 作业调度结束."); }else{ System.out.println(new Date()+" 任务退出"); } } } //test package quartz; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.quartz.SimpleTrigger; import org.quartz.Trigger; import org.quartz.impl.StdSchedulerFactory; /** * 使用quartz的调度器 * @author Bin * */ public class MyQuartzService { public static void main(String[] args) { // TODO Auto-generated method stub try { startScheduler(); } catch (SchedulerException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void startScheduler() throws SchedulerException{ Scheduler sch=StdSchedulerFactory.getDefaultScheduler(); JobDetail d=new JobDetail("buz", Scheduler.DEFAULT_GROUP, BuzJob.class); //重复调度2次,间隔 60s Trigger t=new SimpleTrigger("buz", Scheduler.DEFAULT_GROUP, 2, 60000); sch.scheduleJob(d, t); sch.start(); } }
//在spring中使用quartz
//使用MethodInvokingJobDetailFactoryBean 可以装配任何普通的bean中方法 不用继承
package quartz; public class QuartzJob { public void work(){ System.out.println("Quartz调度"); } }
<!-- step:1 定义 quartz业务类--> <!--定义一个 工作业务类,要做的事情--> <bean id="quartzjob" class="quartz.QuartzJob"/> <!-- step:2 对业务类进行详情描述--> <!--采用 MethodInvokingJobDetailFactoryBean 装配 任务详情 --> <bean id="jobtask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject" ref="quartzjob"/> <property name="targetMethod" value="work"/> <property name="concurrent" value="false" /> <!-- 是否允许任务并发执行。当值为false时,表示必须等到前一个线程处理完毕后才再启一个新的线程 --> </bean> <!-- 装配触发器 --> <bean id="dotime" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail" ref="jobtask"/> <property name="cronExpression" value="0 * 20 * * ?"/> </bean> <!-- 配置一个线程执行器,用于任务注册 --> <bean id="executor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor"> <property name="corePoolSize" value="10"/> <property name="maxPoolSize" value="100"/> <property name="queueCapacity" value="500"/> </bean> <!-- step:4 将触发器 交给调度工厂 --> <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref local="cronTriggerPunch"/> <ref local="dotime"/> <ref local="cronTriggerPunch1"/> </list> </property> <property name="taskExecutor" ref="executor"/> <property name="autoStartup" value="true"/> <property name="startupDelay" value="60"/> </bean>
//使用JobDetailBean装配 业务
package quartz; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.springframework.scheduling.quartz.QuartzJobBean; import annotation.model.interfaces.Dog; public class PunchJob extends QuartzJobBean { private boolean isRunning=false; private Dog dog; public void setDog(Dog dog) { this.dog = dog; } @Override protected void executeInternal(JobExecutionContext context) throws JobExecutionException { // TODO Auto-generated method stub if(!isRunning){ System.out.println("开始工作"); dog.sound(); isRunning=false; } } }
<!--step:3 对已经详情描述过的bean,装配给 触发器 --> <bean id="cronTriggerPunch" class="org.springframework.scheduling.quartz.CronTriggerBean"> <!-- 采用嵌套类 bean--> <property name="jobDetail"> <!--使用JobDetailBean 装配任务详情 --> <bean class="org.springframework.scheduling.quartz.JobDetailBean"> <property name="jobClass" value="quartz.PunchJob"/> <property name="jobDataAsMap"> <map> <entry key="dog" value-ref="bagong"/> </map> </property> </bean> </property> <property name="cronExpression" value="0 0/1 * * * ?"/> </bean> <!-- PunchJob1:m没有采用 嵌套bean --> <bean id="punchjobDetail" class="org.springframework.scheduling.quartz.JobDetailBean"> <property name="jobClass" value="quartz.PunchJob1"/> <property name="jobDataAsMap"> <map> <entry key="dog" value-ref="rifle"/> </map> </property> </bean> <bean id="cronTriggerPunch1" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail" ref="punchjobDetail"/> <property name="cronExpression" value="0 0/1 * * * ?"/> </bean> <!-- step:4 将触发器 交给调度工厂 --> <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref local="cronTriggerPunch"/> <ref local="dotime"/> <ref local="cronTriggerPunch1"/> </list> </property> <property name="taskExecutor" ref="executor"/> <property name="autoStartup" value="true"/> <property name="startupDelay" value="60"/> </bean>
发表评论
-
spring-session 中的坑
2017-07-06 15:34 10000spring-session 配置 依赖 gradle ... -
Spring AspectJ Aop Annotation
2017-03-29 17:08 713import org.aspectj.lang.Proce ... -
spring 第13天 使用@scheduled注解执行定时任务
2015-01-06 23:11 54099我们使用spring的注解 @Scheduled 执行定时任务 ... -
Spring 第12天,事务传播属性和 隔离级别
2014-09-28 00:36 8201 事务的传播属性(Propagation) 1) REQ ... -
spring 第10 天 AOP 面向切面
2014-08-21 00:08 1757AOP(Aspect Orient Programming ... -
spring 第9天 Resurce 资源访问
2014-08-17 22:20 1877Spring Resource接口 spring提供的Reso ... -
spring 第8天 Spring 注解
2014-08-17 15:33 1476spring注解 @Component:标注一个普通的sp ... -
spring 第7天 Bean,BeanFactory处理器,配置器
2014-08-16 21:46 1243spring 两种后处理器 第一种,Bean 后处理器 对容器 ... -
spring 第6天SpEL,P命名空间,Util Schema
2014-08-13 22:52 1322使用p名称空间配置属性 ... -
spring 第5天不同作用域的bean,注入Field,方法返回值
2014-08-11 22:31 2119协调作用域不同步的bean 问题是;当一个singleton的 ... -
spring 第4天bean继承,init,destory-method
2014-08-10 17:54 1659深入理解Spring容器中的b ... -
spring 第3天使用java类和XML配置bean
2014-08-09 16:51 1510下面采用java类来配置bean,前面都采用xml进行配置be ... -
spring 第2天,bean作用域,自动注入集合
2014-08-06 22:16 1942sping容器中的Bean <!---beans的全 ... -
spring 第1天 IOC,DI,国际化,容器事件
2014-08-04 21:27 14001.构造注入(就是使用 构 ... -
SpringMVC 注解 和非注解
2014-01-26 10:29 18026首先看看非注解的项目结构 在web.xml文件 配置spr ... -
详解spring 每个jar的作用
2013-11-19 23:54 3914spring.jar 是包含有完整 ... -
Spring配置Hibernate事务
2013-11-10 13:45 1222为了保证数据的一致性,在编程的时候往往需要引入事务这个概念。事 ... -
Spring 中引用Properties文件
2013-08-29 14:39 10664其中部分配置信息(邮件发送相关): #邮件发送的相关配置 ... -
Spring IOC控制反转 依赖注入DI
2012-12-15 09:37 2334目录 1.使用IOC控制反转 中的DI依赖注入 手工注入 ... -
Spring IOC控制反转 依赖注入DI
2012-12-14 16:23 8目录 1.使用IOC控制反转 中的DI依赖注入 (两种配置方式 ...
相关推荐
在Spring框架中,为了实现定时任务的调度,引入了一个强大的工具——Quartz。Quartz是一个功能丰富的开源作业调度器,可以用于Java应用程序中的作业调度。它支持触发器、作业、日历等功能,并且能够根据复杂的Cron...
在Spring框架中,实现定时任务主要依赖于Spring的集成模块Spring Integration或通过集成第三方库如Quartz来完成。本文将重点介绍如何利用Spring框架结合表达式规则来配置和执行定时任务,这些规则与Linux中的crontab...
Quartz 是一个强大的开源作业调度框架,常被用于构建企业级的应用程序,提供精确和可扩展的定时任务功能。在Spring Boot中集成Quartz,我们可以方便地创建和管理定时任务,使得应用程序能够按照预设的时间间隔执行...
在Spring框架中,Quartz是一个强大的任务调度库,它允许开发者定义定时任务并根据预设的时间规则执行。其中,`cronExpression`是Quartz中一个关键的配置项,用于定义任务执行的时间规则,通常用于创建复杂的定时计划...
通过阅读《Quartz Job Scheduling Framework第11章》的文档,你将掌握如何利用这个强大的工具来提升你的应用程序的自动化水平,从而提高效率并减少手动操作。 文档中的内容可能还会涵盖错误处理、异常策略、Job状态...
第13章:本章重点对在Spring中如何使用Quartz进行任务调度进行了讲解,同时还涉及了使用JDK Timer和JDK 5.0执行器的知识。 第14章:介绍Spring 3.0新增的OXM模块,同时对XML技术进行了整体的了解。 第15章:对...
Spring 框架提供了多种方式来实现定时任务,其中一种常见的方法是使用 Quartz 作为定时任务的调度器。Quartz 是一个开源的作业调度工具,能够触发在 Java 应用程序中定义的作业,并且支持复杂的循环策略。 #### 二...
第11章 Spring和EJB 11.1 在Spring中置入EJB 11.1.1 代理会话Bean(EJB 2.x) 11.1.2 将EJB置入Spring Bean 11.2 开发Spring驱动的EJB(EJB 2.x) 11.3 Spring和EJB3 11.3.1 引入Pitchfork 11.3.2 从Pitchfork...
第11章 使用Spring JDBC访问数据库 11.1 使用Spring JDBC 11.1.1 JDBCTemplate小试牛刀 11.1.2 在DAO中使用JDBCTemplate 11.2 基本的数据操作 11.2.1 更改数据 11.2.2 返回数据库的表自增主键值 11.2.3 批量更改数据...
9.5.2. 第一个例子 9.5.3. 回滚 9.5.4. 为不同的bean配置不同的事务语义 9.5.5. <tx:advice/> 有关的设置 9.5.6. 使用 @Transactional 9.5.6.1. @Transactional 有关的设置 9.5.7. 插入事务操作 9.5.8. 结合AspectJ...
第13章:本章重点对在Spring中如何使用Quartz进行任务调度进行了讲解,同时还涉及了使用JDK Timer和JDK 5.0执行器的知识。 第14章:介绍Spring 3.0新增的OXM模块,同时对XML技术进行了整体的了解。 第15章:...
4. **spring-context-support.jar**:这个模块提供了对第三方库的支持,如邮件服务、缓存(如Ehcache)、任务调度(如Quartz)等。 5. **spring-aop.jar**:实现了面向切面编程,提供声明式事务管理、代理模式实现...
此外,第11章"轻松整合-Quartz的3种常用整合方式演练"将展示如何在Spring、Spring Boot等应用中集成Quartz,实现灵活的定时任务管理。 接着,我们转向ElasticJob,这是一个分布式任务调度框架,源自LinkedIn的...
第11章spring和ejb 11.1在spring中置入ejb 11.1.1代理会话bean(ejb2.x) 11.1.2将ejb置入springbean 11.2开发spring驱动的ejb(ejb2.x) 11.3spring和ejb3 11.3.1引入pitchfork 11.3.2从pitchfork起步 11.3.3...
第11章 Grails 441 11.1 获取和安装Grails 441 11.1.1 问题 441 11.1.2 解决方案 442 11.1.3 工作原理 442 11.2 创建Grails应用 443 11.2.1 问题 443 11.2.2 解决方案 443 11.2.3 工作原理 443 ...
Spring 通过集成 Quartz 这一成熟的调度框架,为开发者提供了灵活且易于使用的定时任务管理机制。 #### 二、定时任务触发器分类 ##### 2.1 SimpleTrigger 简单触发器 - **定义**:适用于需要简单触发调度的场景。...
9.5.2. 第一个例子 9.5.3. 回滚 9.5.4. 为不同的bean配置不同的事务语义 9.5.5. <tx:advice/> 有关的设置 9.5.6. 使用 @Transactional 9.5.7. 插入事务操作 9.5.8. 结合AspectJ使用 @Transactional 9.6. 编程...
第11章 Spring和EJB 11.1 在Spring中置入EJB 11.1.1 代理会话Bean(EJB 2.x) 11.1.2 将EJB置入Spring Bean 11.2 开发Spring驱动的EJB(EJB 2.x) 11.3 Spring和EJB3 11.3.1 引入Pitchfork 11.3.2 从Pitchfork...
14. **定时任务(Task Scheduling)**:可以使用 Spring 的 @Scheduled 注解来实现定时任务,或者集成 Quartz 进行更复杂的调度。 15. **邮件服务**:通过配置和使用 JavaMailSender 接口,可以方便地发送电子邮件...
第11章 使用Spring JDBC访问数据库 11.1 使用Spring JDBC 11.1.1 JDBCTemplate小试牛刀 11.1.2 在DAO中使用JDBCTemplate 11.2 基本的数据操作 11.2.1 更改数据 11.2.2 返回数据库的表自增主键值 11.2.3 批量更改数据...