一尘不染

不会在基于Flyway Java的迁移中注入Spring Bean

spring-boot

我正在尝试在flyway迁移Java代码中注入配置属性的组件,但它始终为null。

我在Flyway上使用弹簧靴。

@Component
@ConfigurationProperties(prefix = "code")
public class CodesProp {

    private String codePath;
 }

然后在Flyway迁移代码中,尝试按以下方式自动编写此组件:

public class V1_4__Migrate_codes_metadata implements SpringJdbcMigration {

@Autowired
private CodesProp codesProp ;
public void migrate(JdbcTemplate jdbcTemplate) throws Exception {
    codesProp.getCodePath();  
}

在这里,codesProp始终为空。

有什么方法可以在弹道内注入弹簧豆或在弹道豆之前对其进行初始化?

谢谢。


阅读 362

收藏
2020-05-30

共1个答案

一尘不染

Flyway不支持将依赖项注入到SpringJdbcMigration实现中。它只是在类路径上查找实现SpringJdbcMigration并使用默认构造函数创建新实例的类。这是在SpringJdbcMigrationResolver中执行的。执行迁移时,SpringJdbcMigrationExecutor创建一个新的JdbcTemplate,然后调用您的迁移实现的migrate方法。

如果您确实需要将依赖项注入基于Java的迁移中,我认为您必须实现自己的依赖项,以MigrationResolver从应用程序上下文中检索特定类型的bean,并ResolvedMigration为每个bean创建并返回一个实例。

2020-05-30