为了便于干净的初始化部署运行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