【发布时间】:2017-12-07 12:09:03
【问题描述】:
我使用 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
}
}
在应用类中我做到了:
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-boot吗?如果是这样,您不需要为飞路迁移定义组件。如果您想覆盖默认选项并使其在休眠之前运行,请添加一个 bean 配置,就像我在回答中解释的那样。您不需要告诉 spring-boot 运行迁移,它会自动执行。
标签: java spring hibernate flyway