S2JH经验分享:控制jdbc:initialize-database与其余bean加载顺序

为了便于干净的初始化部署运行S2JH框架,采用了jdbc:initialize-database来从SQL脚本中初始化框架基础数据,其中遇到一个问题:git

框架使用了Spring与Quartz集成以JDBC方式进行Cluster集群定时任务支持,其中一个须要提早准备的就是须要初始化好Quartz须要的相关数据表,可是按照默认设置Spring Scheduler始终会在jdbc:initialize-database以前就优先加载,致使spring scheduler加载过程抛出Quartz相关数据表Table Not Found的异常。 spring

因为jdbc:initialize-database不是按照常规的bean id方式定义,致使无法直接以depends-on控制依赖加载顺序,经过分析jdbc:initialize-database相关schema定义和对应源代码,最终以一种特殊的depends-on写法实现了顺序控制:框架

<bean id="quartzClusterScheduler" class="lab.s2jh.schedule.ExtSchedulerFactoryBean" depends-on="org.springframework.jdbc.datasource.init.DataSourceInitializer#0">.net

详见相关代码:prototype

http://git.oschina.net/xautlx/s2jh/blob/master/prototype/src/main/resources/context/context-profiles.xmlxml

http://git.oschina.net/xautlx/s2jh/blob/master/prototype/src/main/resources/service/spring-schedule.xml部署

相关文章
相关标签/搜索