spring-boot - Flyway 6 JavaMigrations 与 Spring Beans 的 native 依赖注入(inject)

标签 spring-boot dependency-injection spring-data flyway

我已经看到了许多很棒的解决方法来创建 Flyway JavaMigrations 并使用 @DependsOnApplicationContextAware 注入(inject) Spring Bean(例如 https://stackoverflow.com/a/48242865/5244937 )。

然而,Flyway 6 文档的一部分声称 Spring Bean 本身可以进行依赖注入(inject):

这是真的吗?这将如何运作?

最佳答案

将您的迁移标记为@Component,并将它们放入 spring 扫描的文件夹中(例如,在您的应用程序包中,而不是在 db.migrations)。这将确保可以使用@Autowired,因为该bean是由spring实例化的。 (db.migrations中的迁移将被flyway自动扫描,并且不会被spring实例化。)

然后实现一个 FlywayConfigurationCustomizer 通过从 spring 上下文加载迁移来添加迁移:

@Configuration
class FlywayConfiguration implements FlywayConfigurationCustomizer {
    @Autowired
    private ApplicationContext applicationContext;

    @Override
    public void customize(FluentConfiguration configuration) {
        JavaMigration[] migrationBeans = applicationContext
         .getBeansOfType(JavaMigration.class)
         .values().toArray(new JavaMigration[0]);
        configuration.javaMigrations(migrationBeans);
    }
}

关于spring-boot - Flyway 6 JavaMigrations 与 Spring Beans 的 native 依赖注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62466405/

相关文章:

java - 几分钟后,Spring Boot 停止解析 View

java - 我想根据 jpql 中的 updated_on 时间戳聚合数据,但关键字 INTERVAL 无效

javascript - AngularJS 在运行时覆盖依赖

java - Spring:通过构造函数注入(inject)静态成员(System.in)

spring-security - QueryDslPredicateExecutor 和 Spring Data Rest 方面的安全上下文

java - 多个 jpa :repositories in xml config, 如何使用 Spring java 配置配置 @EnableJPARepositories?

java - log4j2 生成具有旧日期的文件夹 - Spring Boot

java - 如果函数的参数是使用 @Value 注释从属性文件注入(inject)的,如何调用该函数

c# - 在运行时注入(inject)依赖的最佳方式

java - 具有相同 where 子句的 Hibernate 二级查询缓存问题