自动装配在 flyway 回调方法中不起作用
Autowiring not working inside flyway callback methods
我正在尝试迁移演示的飞行路线。我可以在其中迁移代码。我已经扩展了 BaseFlywayCallback 并且我想在每次迁移之前和之后打印迁移信息。我在其他服务 class 中有用于打印信息的代码。我正在自动接线,但它在那里不工作。我尝试了其他一些方法,但都不值得。
@Autorired
PrintInfoService service
我该怎么做?
在 spring 引导中与 flyway 内部集成是通过使用 FlywayAutoConfiguration
完成的
它必须创建一个 Flyway
bean,它将在类路径中注册所有回调。
我无法测试这个,但我相信你必须:
- 确保您的回调是一个 spring bean
- 确保 spring 引导扫描您的 bean 并在初始化期间创建它的一个实例
- 在
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)
- ... 并确保您的回调在 spring 识别的 bean 列表中。
我正在尝试迁移演示的飞行路线。我可以在其中迁移代码。我已经扩展了 BaseFlywayCallback 并且我想在每次迁移之前和之后打印迁移信息。我在其他服务 class 中有用于打印信息的代码。我正在自动接线,但它在那里不工作。我尝试了其他一些方法,但都不值得。
@Autorired
PrintInfoService service
我该怎么做?
在 spring 引导中与 flyway 内部集成是通过使用 FlywayAutoConfiguration
完成的它必须创建一个 Flyway
bean,它将在类路径中注册所有回调。
我无法测试这个,但我相信你必须:
- 确保您的回调是一个 spring bean
- 确保 spring 引导扫描您的 bean 并在初始化期间创建它的一个实例
- 在
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)
- ... 并确保您的回调在 spring 识别的 bean 列表中。