如何在休眠验证之前开始进行飞车迁移? [英] How can I start flyway migration before hibernate validation?

查看:62
本文介绍了如何在休眠验证之前开始进行飞车迁移?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用flyway +休眠验证.我有飞豆:

I use flyway + hibernate validate. I have flyway bean:

@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
    }
}

在Apllication类中,我这样做:

And in Apllication class I do it:

public static void main(String[] args) {
        try {
            AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(ApplicationConfiguration.class);
            context.getBean(DbMigration.class).runMigration();

但是我的休眠状态是在runMigration();之前开始的,并验证了抛出异常.我下一步如何开始?

But my hibernate start before runMigration(); And validate throw exeption. How can I start next?

  1. 运行迁移
  2. 开始休眠验证

  @Bean
    @Autowired
    public LocalContainerEntityManagerFactoryBean entityManagerFactory(DataSource datasource) {
        log.info("entityManagerFactory start");
        dbMigration.runMigration();

但是我认为这很糟糕

推荐答案

在您的Spring应用程序配置中,如果您有一个实体管理器工厂bean配置,则可以使其依赖于flyway bean,以便在它之后进行初始化.像这样:

In your spring application configuration, if you have an entity manager factory bean configuration you can make it depend on the flyway bean so that it gets initialized after it. Something like:

@Bean
@DependsOn("flyway")
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
    // Initialize EntityManagerFactory here
}

flyway bean配置可以如下:

The flyway bean configuration can be something like:

@Bean(initMethod = "migrate")
public Flyway flyway() {
    Flyway flyway = new Flyway();
    // configure bean here
    return flyway;
}

这篇关于如何在休眠验证之前开始进行飞车迁移?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆