自动装配在 flyway 回调方法中不起作用

Autowiring not working inside flyway callback methods

我正在尝试迁移演示的飞行路线。我可以在其中迁移代码。我已经扩展了 BaseFlywayCallback 并且我想在每次迁移之前和之后打印迁移信息。我在其他服务 class 中有用于打印信息的代码。我正在自动接线,但它在那里不工作。我尝试了其他一些方法,但都不值得。

  @Autorired
  PrintInfoService service

我该怎么做?

在 spring 引导中与 flyway 内部集成是通过使用 FlywayAutoConfiguration

完成的

它必须创建一个 Flyway bean,它将在类路径中注册所有回调。

我无法测试这个,但我相信你必须:

  1. 确保您的回调是一个 spring bean
  2. 确保 spring 引导扫描您的 bean 并在初始化期间创建它的一个实例
  3. FlywayAutoConfiguration 中放置一个断点:
public Flyway flyway(FlywayProperties properties, DataSourceProperties dataSourceProperties,
                ResourceLoader resourceLoader, ObjectProvider<DataSource> dataSource,
                @FlywayDataSource ObjectProvider<DataSource> flywayDataSource,
                ObjectProvider<FlywayConfigurationCustomizer> fluentConfigurationCustomizers,
                ObjectProvider<JavaMigration> javaMigrations, ObjectProvider<Callback> callbacks)
  1. ... 并确保您的回调在 spring 识别的 bean 列表中。