2017-06-21 31 views
0

我有一個Java Spring Boot應用程序,在我的Maven pom.xml中配置了作爲依賴項的Flyway應用程序(我有一個父pom和一個項目pom ...在我的項目中定義了pway)。Flyway Init Order

<dependencies> 
    <dependency> 
     <groupId>org.flywaydb</groupId> 
     <artifactId>flyway-core</artifactId> 
     <version>4.2.0</version> 
    </dependency> 
... 

和application.properties只是一對夫婦的條目:

flyway.enabled=true 
flyway.out-of-order=true 

我可以運行maven任務來獲得遷飛運行migrate創建/更新我的數據庫,然後運行我的針對應用程序,但是我很難在正確的時間通過運行我的應用程序來調用migrate(這在產品中顯然很重要)。它看起來像我所有的Spring類首先被實例化,其中一些涉及查看數據庫,然後發生Flyway遷移,例如,如果您針對空數據庫運行應用程序,則應用程序在嘗試訪問任何內容時崩潰數據庫。

有關在何處尋找錯誤信息以獲取Flyway在我的Spring Boot應用程序的啓動過程中進行遷移的任何提示?

+0

在您的父母pom中,存在Flyway依賴關係。我們使用gradle和flyway出現在頂部。 – Prashant

+0

爲了清楚起見,我已經在我的項目pom中定義了它,而不是我的父pom,但是對於您的問題,當它列在第一位時,我沒有指定任何特定的相關性。也許我應該研究一下 - 否則也可能是我必須直接在代碼中聲明它爲配置的Bean,並在那裏指示依賴關係。但無論哪種方式,我都不確定直接在Flyway上指示哪些依賴項,因爲依賴項指示必須配置_before_。所以,也許我必須指出Flyway作爲對其他目前正在加載的其他東西的依賴。 –

回答

0

我不確定你的數據源配置是怎麼樣的,但是你可以用這種方式聲明你的JPA配置,使它依賴於飛路遷移。

您可以聲明@DependsOn("flyway")關於任何@Config類或數據源bean的註釋,「flyway」是您的flyway配置bean的聲明名稱。然後,在您的flyway配置bean上,使用類似以下的initMethod屬性限定bean註釋:@Bean(initMethod = "migrate")