mar*_*618 2 dependency-injection flyway spring-data spring-boot
我见过许多很棒的解决方法来创建 Flyway JavaMigrations 并使用@DependsOn和注入 Spring Bean ApplicationContextAware(例如/sf/answers/3377000581/)。
然而,Flyway 6 文档的一部分声称 Spring Bean 本身可以进行依赖注入:
是真的吗?这将如何运作?
将您的迁移标记为@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);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1766 次 |
| 最近记录: |