1
、SchedulerFactoryBean会自动启动。
当在
spring
文件中定义了多个SchedulerFactoryBean实例时,一定要小心,因为这些
ScheduleFactoryBean
自从
load
进程序里,就会自动启动。如果要手动控制,注意要将autoStartup属性设置为
false
。
2
、SchedulerFactoryBean暴露的是
Scheduler
,而不是SchedulerFactoryBean。
SchedulerFactoryBean实现了
FactoryBean
接口,必须实现两个方法,一个是getObjectType,另外一个则是
getObject;
其中
getObjectType
定义了返回的类型应该为Scheduler,而
getObject
指定了返回的是其一个重要属性
scheduler
,这个
scheduler
就是我们要获得的调度。
若在配置文件里为SchedulerFactoryBean定义了
id
属性为
"scheduler"
,则在程序里调用
getBean
时,需要注意
getBean("scheduler")
返回的是Scheduler对象
3
、
SchedulerFactoryBean中有两个很重要的属性,一个是
scheduler
,另外一个是schedulerFactoryClass,
spring
通过用schedulerFactoryClass做代理来产生调度,并把它赋给
scheduler
。
private Class schedulerFactoryClass = StdSchedulerFactory.class;
//
如果你没有指定schedulerFactoryClass ,那么它用的是
quartz
中自带的调度工厂,
this.scheduler = createScheduler(schedulerFactory, this.schedulerName);
//
这里的schedulerName默认传进来是空的,其实如果你不是用自己定义的schedulerFactoryClass
//
恐怕也没有什么意义,因为createScheduler是这样调用的
return schedulerFactory.getScheduler();
//
显然schedulerName并没有用到,除非是你自行写一个schedulerFactory,并做好相应处理,
//
否则返回的这个
scheduler
一定是一个指定名称的调度
Scheduler sched = schedRep.lookup(getSchedulerName());
//
这个
sched
就是要代理生成的schedule
r
,getSchedulerName只有一句话,如下:
cfg.getStringProperty(PROP_SCHED_INSTANCE_NAME,"QuartzScheduler");
//
如果我们没有使用一些特殊的机制,那么返回的只能是一个固定的字符串。
如上说述,如果我们希望不进行改造,就在
spring
的配置文件中定义多个调度的方法来实现我们个性化的任务安排时,可能并不可行。因为
spring
配置的
scheduler
只能有一个,即使你定义了多个调度,那么其实实现的只有一个,只是所有你希望指向不同调度的
id
都会指向它罢了,而这个调度会包含了其它所有调度中的任务。
4
、抱错:org.quartz.SchedulerException: Repeat Interval cannot be zero
场景:该错误通常是在引用了
SimpleTriggerBean
的时候没有为
repeatCount
和repeatInterval赋值发生的,很奇怪,
SimpleTriggerBean
有一个空构造函数,在里面直接为
repeatCount
赋了一个REPEAT_INDEFINITELY,这样,当其进入
validate
函数时,会抱错。而
quartz
中的
SimpleTrigger
这两个属性默认值均为
0
,不懂
spring
中为何这样处理。
5
、
quartz
和
crontab
的区别
a
、
quartz
属于用户级别,
crontab
则属于系统级别;
b
、
quartz
调度的线程,所有线程共享一个
jvm
;
crontab
调度的则是应用,每个应用都独立的占用资源。
6
、
quartz
中加入并发多线程分析
a
、
quartz
本身是有线程池支持的,这个可以用org.quartz.threadPool.threadCount属性来设置线程池大小,
quartz
的任务可以由
quartz
的线程池自动调度
b
、对每个任务也可能起多线程,但是需要对并发数量做控制,可以考虑使用
commons-pools
提供的对象池机制
相关推荐
Spring 中 Quartz 调度器的使用 Spring 中 Quartz 调度器的使用是指在 Spring 框架中使用 Quartz 调度器来实现任务调度。Quartz 是一个功能强大且灵活的开源任务调度器,能够满足复杂的任务调度需求。在 Spring 中...
在Spring框架中集成Quartz调度器,可以实现定时任务的高效管理。Quartz是一个开源的作业调度框架,它允许程序创建、调度和执行任务。在本示例中,我们将探讨如何在Spring应用中配置和使用Quartz,以及通过示例代码来...
3. **调度器配置**:`SchedulerFactoryBean`是Spring对Quartz调度器的包装,它管理所有的触发器和任务。在这里,我们将`cron`触发器添加到调度器中,使得任务与触发器关联起来。 接下来,我们看下服务类和服务的...
### Spring集成Quartz调度框架详解 #### 一、Quartz调度框架概述 Quartz是一个开源的、成熟的作业调度框架,其主要目标是在Java应用程序中提供简单而强大的作业调度能力。Quartz支持作业按时间间隔(如每天、每周...
总结来说,Spring Quartz调度器是企业级应用中实现定时任务的重要工具,通过Spring的管理和Quartz的调度能力,可以方便地创建、调整和监控定时任务,提升系统的自动化程度。通过以上步骤,你可以快速掌握Spring集成...
在Spring框架中集成Quartz是一款常见的任务调度解决方案,它允许开发者在应用中安排定时任务的执行。Quartz是一个开源的作业调度框架,可以用来在Java应用程序中安排复杂的作业任务。以下将详细介绍如何在Spring中...
Spring 提供了与 Quartz 集成的模块,使得在 Spring 应用程序中使用 Quartz 更加便捷,包括 Job 实例的管理、触发器的配置以及对 Quartz Scheduler 的控制。 在这个 "spring+quartz demo" 中,我们可以学习到如何将...
首先,你需要在Spring的配置文件中声明一个`SchedulerFactoryBean`,这将初始化并管理Quartz调度器。然后,你可以定义`JobDetail`和`Trigger`,`JobDetail`代表你要执行的任务,而`Trigger`定义了任务的执行时机。...
在本文中,我们将详细介绍如何将 Spring 整合任务调度框架 Quartz,从而实现任务调度的自动化。 一、使用配置文件方式整合 Quartz 在 Spring 中,可以使用配置文件方式来整合 Quartz。这种方式非常简单,开发者只...
通过对这些文件的深入学习和理解,你可以掌握如何在Spring环境中配置和使用Quartz进行任务调度,这对于构建有定时任务需求的应用程序非常有帮助。这个项目提供了实践经验,有助于开发者提升在企业级应用开发中的技能...
Spring框架作为Java领域广泛使用的轻量级框架,提供了与第三方库Quartz的整合,使得开发者能够轻松地在Spring应用中实现复杂的定时任务调度。Quartz是一款开源的作业调度框架,支持丰富的调度策略,可以满足各种定时...
Spring Quartz 是一个强大的任务调度框架,它允许开发者在Java应用程序中定义和执行定时任务。结合Spring框架,可以方便地在企业级应用中实现复杂的时间触发逻辑。本实例提供了可以直接运行的任务调度解决方案,既...
Spring框架作为一个全面的企业级应用开发解决方案,提供了强大的任务调度支持,而Quartz则是一个流行的开源作业调度库,能够与Spring很好地集成。现在,我们就来深入探讨"spring quartz 任务调度"这一主题。 首先,...
Quartz和Spring-Quartz是两个在Java世界中广泛使用的定时任务管理框架。Quartz是一个开源的作业调度框架,允许应用程序定义和调度任务在特定时间执行。而Spring-Quartz则是Spring框架对Quartz的集成,它使得在Spring...
Quartz可以集成到Spring中,利用Spring的依赖注入和配置能力,使得任务调度更加简洁和易于维护。 **一、Spring与Quartz的集成** 1. **配置Quartz** 在Spring应用中集成Quartz,首先需要添加Quartz的相关依赖到...
### 三、Quartz调度策略 Quartz提供了多种调度策略,包括: - **简单触发器(SimpleTrigger)**:按固定间隔重复执行任务。 - **Cron触发器(CronTrigger)**:基于Cron表达式来定义触发时间,支持复杂的定时规则...
Spring Quartz 是一个基于 Java 的任务调度框架,它允许开发者定义定时任务并在应用程序中灵活地调度这些任务。这个框架是 Spring 和 Quartz Scheduler 的集成,提供了与 Spring 框架的无缝集成,使得在 Spring 应用...
二、Spring + Quartz调度 当Quartz与Spring框架结合使用时,可以充分利用Spring的依赖注入和管理特性,简化任务的配置和管理。Spring提供了一个`org.springframework.scheduling.quartz.SchedulerFactoryBean`,...
Spring集成Quartz是一款高效的任务调度框架,用于在Java应用程序中执行计划、周期性的任务。Quartz与Spring的结合,使得我们可以充分利用Spring的依赖注入(DI)和AOP特性,简化了任务调度的复杂性。 首先,Quartz...
在 Spring 框架中,Quartz 是一个非常流行的开源作业调度器,可以实现任务的定时执行。在本篇文章中,我们将讨论如何在 Spring 中配置 Quartz,以实现 Java 定时器的功能。 Quartz 介绍 Quartz 是一个开源的作业...