2017-06-21 16 views
0

私はMaven pom.xmlの依存関係としてFlywayを設定したJava Spring Bootアプリケーションを持っています(私は親のPOMとプロジェクトのPOMを持っています)。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 

私はフライウェイが私のデータベースを更新/作成するmigrateを実行し、そのに対して自分のアプリケーションを実行するために取得するにはMavenのタスクを実行することができます私のアプリケーションを実行するだけで正しい時刻にmigrateに電話をかけるのが難しいです(これは明らかに重要です)。私のSpringクラスのすべてが最初にインスタンス化されているように見えますが、その中にはデータベースを見ているものがあり、その後にFlywayの移行が起こるので、空のデータベースに対してアプリケーションを実行すると、データベース。

Springブートアプリケーションの起動プロセスの初期段階でFlywayにマイグレーションを行うために間違っている場所を知るためのヒントを教えてください。

+0

親POMには、フライウェイの依存関係があります。私たちはgradleを使用し、フライウェイは一番上に表示されます。 – Prashant

+0

私はそれが私の親プロジェクトではなく、私のプロジェクトのpomに定義されていますが、あなたの質問には、最初にリストされていますが、私は特定の依存関係は示していません。たぶん私はそれを調べなければならないかもしれません。そうでなければ、コード内に構成されたBeanとして直接宣言し、そこに依存関係を示す必要があるかもしれません。しかしどちらの方法でも、依存関係は何を設定する必要があるかを示すので、私はFlywayに直接どのような依存関係を示すかはわかりません。だから、私は早くにロードされている他の何かにフライウェイが依存していると言わなければなりません。 –

答えて

0

データソースの設定がどのようになっているかわかりませんが、フライウェイの移行に依存するようにJPA設定を宣言できます。

@DependsOn("flyway")アノテーションを@ConfigクラスまたはデータソースBeanに宣言できます。「flyway」は、フライウェイ構成Beanの宣言された名前です。次に、フライウェイ構成Beanで、次のようなinitMethodプロパティを使用してBean注釈を修飾します。@Bean(initMethod = "migrate")