2016-08-08 9 views
2

Liquibaseを使用したSpring Boot 1.4.0ベースのプロジェクトがあります。Spring Boot 1.4:Liquibase終了後のメソッドの実行

メソッドAFTER liquibaseを実行することはできますか?

Bean Post Processorのようなものはありますか?

私がしたいことは、アプリケーションが開発モードで起動されたときにデータベースにデータを追加することです。開発モードでは、アプリケーションはメモリ内のh2データベースを使用するため、データを書き込む前にliquibaseがテーブルを作成する必要があります。

答えて

6

スプリングブートliquibaseという名前のSpringLiquibase beanを自動的に構成します。このBeanに依存するBeanは、Liquibaseの終了後に作成されます。たとえば、あなたがデータベースを作成する@PostConstructを使用することができます - しかし、DEVモードで実行している場合のみ

@Bean 
@DependsOn("liquibase") 
public YourBean yourBean() { 
    return new YourBean(); 
} 

static class YourBean { 

    @PostConstruct 
    public void populateDatabase() { 
     System.out.println("This will be called after Liquibase has finished"); 
    } 

} 
+0

ありがとう:)美しい解決策 –

2

別の解決策は、LiquiBaseを、データベースにこれらの事を挿入できるようになります。

これはLiquiBaseでcontext=""属性を指定することで実行できます。

別のオプションは、dbms="h2db"(マニュアルを参照してください確認し、正確な文字列は、H2を選択することが何であるかを忘れてしまった!)

はどちらチェンジの属性であるとき、LiquiBaseをのみ、データベースには、このテスト・データを挿入できるようになります。

これは、この種のシナリオで私が推奨する解決策です。

関連する問題