-
Notifications
You must be signed in to change notification settings - Fork 3
Home
irof edited this page Aug 10, 2020
·
6 revisions
SpringBoot + H2Database での実行例です。
- テストコード
- アプリケーションリスナー
- Flyway
テストを実行すると出ます。マイグレーションのテストと言い張ってもいいかもしれません。私は起動テストに入れています。
-
@SpringBootTest
でDataSource
を受け取るテストを作成する - テストを実行する
import jig.erd.JigErd;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import javax.sql.DataSource;
@SpringBootTest
public class ErdTest {
@Test
void run(@Autowired DataSource dataSource) {
JigErd.run(dataSource);
}
}
アプリケーションを起動すると出ます。ローカルとか開発時専用。本番でやることはないと思います。
- JigErdを継承したApplicationListenerを作成する
- アプリケーションを起動する
package sample;
import jig.erd.JigErd;
import org.springframework.boot.context.event.ApplicationStartedEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Component;
import javax.sql.DataSource;
@Component
public class JigErdListener extends JigErd implements ApplicationListener<ApplicationStartedEvent> {
public JigErdListener(DataSource dataSource) {
super(dataSource);
}
@Override
public void onApplicationEvent(ApplicationStartedEvent event) {
run();
}
}
以下は R__
でやっていますが、マイグレーションの間に挟んだらその時のダイアグラムが出せます。嬉しいかどうかは知らない。
- Java-based migrationを作成する
- マイグレーションを実行する
package db.migration;
import jig.erd.JigErd;
import org.flywaydb.core.api.migration.BaseJavaMigration;
import org.flywaydb.core.api.migration.Context;
import org.springframework.jdbc.datasource.SingleConnectionDataSource;
import javax.sql.DataSource;
public class R__JigErd extends BaseJavaMigration {
@Override
public void migrate(Context context) {
DataSource dataSource = new SingleConnectionDataSource(context.getConnection(), true);
new JigErd(dataSource).run();
}
}