1

与 Spring 集成时如何正确配置 flyway?我看到有一个接受属性的配置方法,但是从 spring XML 中它将需要一个 setter 方法来提供一种注入属性实例的方法。

我可以编写自己的 Pojo 来将配置委托给 flyway 实例,但不知何故,我觉得我错过了一些东西。

这是我的配置:

<bean 
  id="flyway" 
  class="com.googlecode.flyway.core.Flyway" 
  init-method="migrate" 
  lazy-init="false"
  depends-on="dataSource"
  >
   <property name="dataSource" ref="dataSource" />
   <property name="locations" value="classpath:/META-INF/migrations" />
</bean>

我想为迁移配置提供一个专用的属性文件,如此处所述:

https://github.com/flyway/flyway/blob/master/flyway-commandline/src/main/assembly/flyway.properties

javadoc我看到我可以设置大部分属性。我可以使用 spring ${} 属性替换并使用内置的机制加载属性文件,但这会使这些属性对所有 bean 都可用,我会添加我需要的每一个。

我的包装器将提供一个设置器,因此我可以将以下内容添加到我的 spring xml 配置中:

<property name="configLocations" value="classpath:/META-INF/flyway.properties" />

任何想法表示赞赏。

4

3 回答 3

1

您应该使用 spring 注释并包装 Flyway 类,然后做任何您想做的事情。例如,配置飞行路线属性。这篇博文可能会给你一个例子http://esofthead.com/migrate-database-highly-change-environment-multiple-versions-management/

于 2014-01-17T06:07:23.510 回答
1

Spring 的MethodInvokingFactoryBean应该做你想做的事。

于 2013-04-26T17:29:59.907 回答
1

JdbcTemplate或者,您可以使用 Flyway 的SpringJdbcMigration创建迁移。以下示例是从Flyway 文档中复制的:

import com.googlecode.flyway.core.api.migration.spring.SpringJdbcMigration;
import org.springframework.jdbc.core.JdbcTemplate;

public class V1_2__Another_user implements SpringJdbcMigration {

    @Override
    public void migrate(JdbcTemplate jdbcTemplate) throws Exception {
        jdbcTemplate.execute("INSERT INTO test_user (name) VALUES ('Obelix')");
    }
}
于 2013-04-26T17:44:28.437 回答