【问题标题】:How to integrate Flyway into our spring-batch jdbc application如何将 Flyway 集成到我们的 spring-batch jdbc 应用程序中
【发布时间】:2018-12-09 10:52:39
【问题描述】:

我们有一个带有 DB2 jdbc 数据源的 spring-batch 应用程序。想要将 Flyway 迁移功能添加到我们的应用程序中。我一直在探索这个article,它非常有意义,除了提到如何指定“entityManagerFactory”的部分 - 他们的例子是 JPA with Hibernate,它看起来像这样:

<!-- Entity Manager Factory configuration -->
<bean id="entityManagerFactory" class="o.s.orm.jpa.LocalContainerEntityManagerFactoryBean" depends-on="flyway">
    <property name="dataSource" ref="dataSource" />
    <property name="jpaVendorAdapter">          
            <bean class="o.s.orm.jpa.vendor.HibernateJpaVendorAdapter">
                <property name="database" value="${jpa.database}"/>
            </bean>
    </property>
</bean>

我们的应用程序是 db2 的简单 JDBC 数据源。如何定义 &lt;bean id="entityManagerFactory" 以便 Spring 将其识别为托管 Bean?我什至需要指定 entityManagerFactory bean 配置吗?

【问题讨论】:

    标签: spring flyway


    【解决方案1】:

    不,您不必指定 entityMangerFactory bean。飞行路线迁移不一定是豆类。 这是 flyway 迁移的示例配置:

    @Configuration
    public class FlywayInitializer {
    
      @Autowired
      private DataSource dataSource;
    
      @PostConstruct()
      private void startMigrations() {
    
        Flyway flyway = new Flyway();
        flyway.setDataSource(dataSource);
        flyway.setLocations("db/migrations");
        flyway.setSchemas("public");
        flyway.setSqlMigrationPrefix("H");
        flyway.migrate();
      }
    }
    

    我们首先创建一个新的 Flyway 对象。 javax.Sql.DataSource 是 flyway 唯一需要的 bean。 Flyway 需要来自此 bean 的数据,以便它可以连接到数据库。 然后我们配置迁移所在的位置,flyway 的模式(第一个模式是将创建schema_version 表的模式)和迁移的迁移前缀(例如,我的迁移看起来像这样:H1__init_db.sql)。

    还有很多其他的属性可以设置。完成 flyway 对象的配置后,调用 migrate 方法以执行迁移。

    【讨论】:

    • 我很高兴它对你有用@JamesD。请考虑接受答案(通过单击赞成/反对按钮下方的复选标记),以便其他有类似问题的人知道此答案是问题的解决方案。
    猜你喜欢
    • 2011-10-16
    • 1970-01-01
    • 2014-01-25
    • 2018-05-26
    • 1970-01-01
    • 2020-12-01
    • 1970-01-01
    • 2019-05-26
    • 2018-11-10
    相关资源
    最近更新 更多