我是否应该为Flyway bean的init-method使用Spring占位符?

时间:2015-10-20 17:37:55

标签: spring flyway

由于我们为不同的构建和部署使用不同的application.properties文件(例如,对于不同类型的开发人员和测试环境,除了部署到Prod之外),我希望能够更改哪个init-在Spring的application-context.xml中为Flyway bean配置了方法。我想做这样的事情:

<context:property-placeholder location="classpath:application.properties,classpath:application-instance.properties"/>
<bean id="flyway" class="org.flywaydb.core.Flyway" init-method="${flyway.database.init.method}">
    <property name="baselineOnMigrate" value="true" />
    <property name="locations" value="classpath:/db-migrations/sql/" />
    <property name="dataSource" ref="dataSource" />
</bean>    

但即使我在XML配置中的其他占位符中使用此application.properties文件,我也会收到此错误:

  

.BeanDefinitionValidationException:无法找到名为&#39; $ {flyway.database.init.method}&#39;的初始化方法。在名为&#39; flyway&#39;

的bean上

1 个答案:

答案 0 :(得分:2)

如果您使用spring 3.1或更高版本,我强烈建议您查看使用环境配置文件。它们专门用于解决这个问题。

查看此post了解详情。