使用Liquibase做数据库的持续集成
每个系统需要维护自己的数据库脚本,这个脚本文件我们采用Liquibase的格式,changeset格式请参考官
方网站
http://www.liquibase.org/documentation/changeset.html
在我们的backend系统中,采用以下方式与Liquibase集成,在spring文件中根据自己的系统情况做以下配置
<!-- 业务数据库的持续集成 -->
<bean id="bizLiquibase" class="com.ippjr.common.ds.ci.IPPJRSpringLiquibase"
lazy-init="false">
<property name="dataSource" ref="dataSource" />
<property name="changeLog" value="classpath:biz-db-changelog.xml" />
</bean>
<!-- 菜单数据,维护自己系统在权限系统的菜单数据 -->
<bean id="menuLiquibase" class="com.ippjr.common.ds.ci.IPPJRSpringLiquibase"
lazy-init="false">
<property name="dataSource" ref="dataSource" />
<property name="changeLog" value="classpath:menu-db-changelog.xml" />
</bean>
<!-- 权限系统的数据源,需要在配置中心配置一个全局的数据源 -->
<bean id="menuDataSource" class="com.ippjr.common.ds.IPPJRDataSource">
<constructor-arg ref="menuConfManager" />
<property name="minPoolSize" value="1" />
<property name="maxPoolSize" value="20" />
<property name="initialPoolSize" value="1" />
<property name="maxIdleTime" value="25000" />
<property name="acquireIncrement" value="3" />
<property name="acquireRetryAttempts" value="10" />
<property name="acquireRetryDelay" value="1000" />
</bean>
<!-- 业务系统自己的数据源 -->
<bean id="bizDataSource" class="com.ippjr.common.ds.IPPJRDataSource">
<constructor-arg ref="bizConfManager" />
<property name="minPoolSize" value="1" />
<property name="maxPoolSize" value="20" />
<property name="initialPoolSize" value="1" />
<property name="maxIdleTime" value="25000" />
<property name="acquireIncrement" value="3" />
<property name="acquireRetryAttempts" value="10" />
<property name="acquireRetryDelay" value="1000" />
</bean>
<!-- 会去配置中心查询自己业务系统的配置信息 -->
<bean id="bizConfManager"
class="com.ippjr.common.config.IPPJRConfigurationManager" lazy-init="false">
<property name="appNamespace" value="ippjr" />
<property name="appName" value="ippjr-timer" />
</bean>
<!-- 有菜单数据的系统需要独立配置该项,会去配置中心查询权限系统的数据库信息 -->
<bean id="menuConfManager"
class="com.ippjr.common.config.IPPJRConfigurationManager" lazy-init="false">