如何在休眠验证之前开始飞行路线迁移?
How can I start flyway migration before hibernate validation?
我使用 flyway + hibernate 验证。我有飞行豆:
@Component
public class DbMigration {
private static final Logger LOG = LoggerFactory.getLogger(DbMigration.class);
private final Config config;
@Autowired
public DbMigration(Config config) {
this.config = config;
}
public void runMigration() {
try {
Flyway flyway = new Flyway();
flyway.configure(properties());
int migrationApplied = flyway.migrate();
LOG.info("[" + migrationApplied + "] migrations are applied");
} catch (FlywayException ex) {
throw new DatabaseException("Exception during database migrations: ", ex);
}
}
public Properties properties() {
//my prop
}
}
在应用程序中 class 我这样做了:
public static void main(String[] args) {
try {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(ApplicationConfiguration.class);
context.getBean(DbMigration.class).runMigration();
但是我的休眠在 runMigration();
之前启动并验证抛出异常。接下来我该如何开始?
- 运行 迁移
- 开始休眠验证
编辑:
@Bean
@Autowired
public LocalContainerEntityManagerFactoryBean entityManagerFactory(DataSource datasource) {
log.info("entityManagerFactory start");
dbMigration.runMigration();
不过我觉得不好
在您的 spring 应用程序配置中,如果您有一个实体管理器工厂 bean 配置,您可以使它依赖于 flyway bean,以便它在它之后被初始化。类似于:
@Bean
@DependsOn("flyway")
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
// Initialize EntityManagerFactory here
}
flyway
bean 配置可以是这样的:
@Bean(initMethod = "migrate")
public Flyway flyway() {
Flyway flyway = new Flyway();
// configure bean here
return flyway;
}
我使用 flyway + hibernate 验证。我有飞行豆:
@Component
public class DbMigration {
private static final Logger LOG = LoggerFactory.getLogger(DbMigration.class);
private final Config config;
@Autowired
public DbMigration(Config config) {
this.config = config;
}
public void runMigration() {
try {
Flyway flyway = new Flyway();
flyway.configure(properties());
int migrationApplied = flyway.migrate();
LOG.info("[" + migrationApplied + "] migrations are applied");
} catch (FlywayException ex) {
throw new DatabaseException("Exception during database migrations: ", ex);
}
}
public Properties properties() {
//my prop
}
}
在应用程序中 class 我这样做了:
public static void main(String[] args) {
try {
AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(ApplicationConfiguration.class);
context.getBean(DbMigration.class).runMigration();
但是我的休眠在 runMigration();
之前启动并验证抛出异常。接下来我该如何开始?
- 运行 迁移
- 开始休眠验证
编辑:
@Bean
@Autowired
public LocalContainerEntityManagerFactoryBean entityManagerFactory(DataSource datasource) {
log.info("entityManagerFactory start");
dbMigration.runMigration();
不过我觉得不好
在您的 spring 应用程序配置中,如果您有一个实体管理器工厂 bean 配置,您可以使它依赖于 flyway bean,以便它在它之后被初始化。类似于:
@Bean
@DependsOn("flyway")
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
// Initialize EntityManagerFactory here
}
flyway
bean 配置可以是这样的:
@Bean(initMethod = "migrate")
public Flyway flyway() {
Flyway flyway = new Flyway();
// configure bean here
return flyway;
}