您的位置:首页 > 编程语言 > Java开发

在Spring中使用Quartz进行任务调度(6)

2012-09-14 21:07 549 查看
●SchedulerFactoryBean的一个重要功能是允许你将Quartz配置文件中的信息转移到Spring配置文件中,带来的好处是,配置信息的集中化管理,同时我们不必熟悉多种框架的配置文件结构。回忆一个Spring集成JPA、Hibernate框架,就知道这是Spring在集成第三方框架经常采用的招数之一。SchedulerFactoryBean通过以下属性代替框架的自身配置文件:

●dataSource:当需要使用数据库来持久化任务调度数据时,你可以在Quartz中配置数据源,也可以直接在Spring中通过dataSource指定一个Spring管理的数据源。如果指定了该属性,即使quartz.properties中已经定义了数据源,也会被此dataSource覆盖;

●transactionManager:可以通过该属性设置一个Spring事务管理器。在设置dataSource时,Spring强烈推荐你使用一个事务管理器,否则数据表锁定可能不能正常工作;

●nonTransactionalDataSource:在全局事务的情况下,如果你不希望Scheduler执行化数据操作参与到全局事务中,则可以通过该属性指定数据源。在Spring本地事务的情况下,使用dataSource属性就足够了;

●quartzProperties:类型为Properties,允许你在Spring中定义Quartz的属性。其值将覆盖quartz.properties配置文件中的设置,这些属性必须是Quartz能够识别的合法属性,在配置时,你可以需要查看Quartz的相关文档。下面是一个配置quartzProperties属性的例子:

<bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">


<property name="quartzProperties">


<props>


<prop key="org.quartz.threadPool.class">①Quartz属性项1


org.quartz.simpl.SimpleThreadPool


</prop>


<prop key="org.quartz.threadPool.threadCount">10</prop>①Quartz属性项2


</props>


</property>


</bean>





在实际应用中,我们并不总是在程序部署的时候就可能确定需要哪些任务,往往需要在运行期根据业务数据动态产生触发器和任务。你完全可以在运行期通过代码调用SchedulerFactoryBean获取Scheduler实例,进行动态的任务注册和调度。

小结

Spring为Quartz的JobDetail和Trigger提供了更具Bean风格的支持类,这使我们能够更地方便地在Spring中通过配置定制这些组件实例。Spring的SchedulerFactoryBean让我们可以脱离Quartz自身的配置体系,而以更具Spring风格的方式定义Scheduler。此外,还可以享受Scheduler生命周期和Spring 容器生命周期绑定的好处。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: