第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

帶有Spring Boot和多個(gè)模式的Liquibase,如何指定執(zhí)行順序

帶有Spring Boot和多個(gè)模式的Liquibase,如何指定執(zhí)行順序

長風(fēng)秋雁 2022-06-15 09:26:22
我們有一個(gè)數(shù)據(jù)遷移作業(yè),它需要按順序初始化模式A和B。我們通過定義多個(gè)模式來處理多個(gè)模式SpringLiquibase,每個(gè)模式一個(gè),每個(gè)模式都有自己的數(shù)據(jù)源和自己的主變更集。(注意,通常在 Spring Boot 中,您不需要定義 SpringLiquibase,因?yàn)樗鼤?huì)檢測(cè)單個(gè)數(shù)據(jù)源并使用該數(shù)據(jù)源為您自動(dòng)配置 SpringLiquibase。)執(zhí)行順序似乎有所不同,具體取決于作業(yè)是在 IDE 中本地運(yùn)行,還是捆綁為單個(gè) JAR Spring Boot 應(yīng)用程序。我們?nèi)绾未_保 liquibase 的兩次執(zhí)行按照我們想要的順序發(fā)生?(為什么順序很重要:A包含一些表,而B包含引用表的視圖。我們?cè)趪L試之前A必須確保我們,否則由于權(quán)限不足導(dǎo)致 B 的創(chuàng)建失敗。)grant select on A.* to Bcreate view B.some_view (...) as select ... from A.xyz
查看完整描述

2 回答

?
慕虎7371278

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超4個(gè)贊

經(jīng)過一番摸索并深入研究源代碼后,事實(shí)證明它非常簡單。


SpringLiquibase 在方法中實(shí)現(xiàn)InitializingBean并執(zhí)行 Liquibase 更新InitializingBean.afterPropertiesSet()。


Spring 在完成每個(gè) bean 的初始化后,對(duì)每個(gè) bean 一個(gè)接一個(gè)地調(diào)用此方法。


所以要強(qiáng)制一個(gè)特定的順序,你需要強(qiáng)制在 Spring 上下文中定義 bean 的順序。最簡單的方法是使用@DependsOn注釋。


所以我們?cè)O(shè)置了類似的東西:


@Bean

public SpringLiquibase liquibaseA(

    @Qualifier("dataSourceA") DataSource dataSource,

    @Qualifier("liquibasePropertiesA") LiquibaseProperties liquibaseProperties

) {

    return instantiateSpringLiquibase(dataSource, liquibaseProperties); 

}


@Bean

@DependsOn("liquibaseA")

public SpringLiquibase liquibaseB(

    @Qualifier("dataSourceB") DataSource dataSource,

    @Qualifier("liquibasePropertiesB") LiquibaseProperties liquibaseProperties

) {

    return instantiateSpringLiquibase(dataSource, liquibaseProperties); 

}


private SpringLiquibase instantiateSpringLiquibase(DataSource dataSource, LiquibaseProperties liquibaseProperties) {

    // set the datasource from dataSource and everything else from liquibaseProperties

}


查看完整回答
反對(duì) 回復(fù) 2022-06-15
?
HUX布斯

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超6個(gè)贊

這不適用于 Spring Boot,但如果您通過更改日志管理遷移,則此解決方法將有所幫助。這假設(shè)您有不同模式的不同數(shù)據(jù)源。


<bean id="liquibase1" class="liquibase.integration.spring.SpringLiquibase">

      <property name="dataSource" ref="dataSource1" />

      <property name="changeLog" value="classpath:db1-changelog1.xml" />

 </bean>

 <bean id="liquibase2" depends-on="liquibase1" class="liquibase.integration.spring.SpringLiquibase">

      <property name="dataSource" ref="dataSource2" />

      <property name="changeLog" value="classpath:db2-changelog1.xml" />

 </bean>

<bean id="liquibase3" depends-on="liquibase2"  class="liquibase.integration.spring.SpringLiquibase">

      <property name="dataSource" ref="dataSource1" />

      <property name="changeLog" value="classpath:db1-changelog2.xml" />

 </bean>

<bean id="liquibase4" depends-on="liquibase3"  class="liquibase.integration.spring.SpringLiquibase">

      <property name="dataSource" ref="dataSource2" />

      <property name="changeLog" value="classpath:db2-changelog2.xml" />

 </bean>


查看完整回答
反對(duì) 回復(fù) 2022-06-15
  • 2 回答
  • 0 關(guān)注
  • 550 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)