Spring Boot Actuator FlywayEndpoint 不适用于多个 Flyway bean
Spring Boot Actuator FlywayEndpoint doesn't work with multiple Flyway beans
我正在尝试将我目前正在处理的项目从 Spring Boot 1.2.8 升级到最新版本 (1.4.0)。我发现,自版本 1.3.0 以来 Spring Boot Actuator 将 Flyway 迁移公开为 Actuator 端点。此端点将单个 Flyway bean 作为参数。
我的项目使用多个 Flyway bean 来管理多个数据库的迁移,当我尝试启动应用程序时,Spring 抱怨 NoUniqueBeanDefinitionException。
当我禁用 EndpointAutoconfiguration 时,上下文被正确创建。我此时不一定需要 Flyway 端点,但我们确实使用其他端点进行监控,因此我不想禁用所有端点。我尝试使用
在 application.properties 文件中禁用 flyway 端点
endpoints.flyway.enabled=false
但 Spring 仍然抱怨(我认为它无论如何都会尝试创建端点 bean,并且 'enabled' 属性 用于确定端点在运行时的可用性)。
我认为目前我唯一的选择是手动启用我需要的端点并禁用自动配置。是吗?
此外,为什么 FlywayEndpoint 仅适用于存在的单个 Flyway bean,是否有原因?据我了解,构造函数可以只获取 Flyway bean 的列表,然后 invoke() 方法可以迭代它们。
I think currently my only option is to manually enable the endpoints that I need and disable autoconfiguration. Is that right?
是的,我认为是正确的。您看到的行为是一个错误,所以我打开了 an issue。我们会在 1.4.1 中修复它,也许在 1.3.8 中也会修复它。
And also, is there a reason, why the FlywayEndpoint only works with a single Flyway bean present?
没有其他原因,我们没有考虑您的用例。我已经为端点打开 an enhancement 以支持多个 Flyway bean(Liquibase 也一样)。
我正在尝试将我目前正在处理的项目从 Spring Boot 1.2.8 升级到最新版本 (1.4.0)。我发现,自版本 1.3.0 以来 Spring Boot Actuator 将 Flyway 迁移公开为 Actuator 端点。此端点将单个 Flyway bean 作为参数。
我的项目使用多个 Flyway bean 来管理多个数据库的迁移,当我尝试启动应用程序时,Spring 抱怨 NoUniqueBeanDefinitionException。
当我禁用 EndpointAutoconfiguration 时,上下文被正确创建。我此时不一定需要 Flyway 端点,但我们确实使用其他端点进行监控,因此我不想禁用所有端点。我尝试使用
在 application.properties 文件中禁用 flyway 端点endpoints.flyway.enabled=false
但 Spring 仍然抱怨(我认为它无论如何都会尝试创建端点 bean,并且 'enabled' 属性 用于确定端点在运行时的可用性)。
我认为目前我唯一的选择是手动启用我需要的端点并禁用自动配置。是吗?
此外,为什么 FlywayEndpoint 仅适用于存在的单个 Flyway bean,是否有原因?据我了解,构造函数可以只获取 Flyway bean 的列表,然后 invoke() 方法可以迭代它们。
I think currently my only option is to manually enable the endpoints that I need and disable autoconfiguration. Is that right?
是的,我认为是正确的。您看到的行为是一个错误,所以我打开了 an issue。我们会在 1.4.1 中修复它,也许在 1.3.8 中也会修复它。
And also, is there a reason, why the FlywayEndpoint only works with a single Flyway bean present?
没有其他原因,我们没有考虑您的用例。我已经为端点打开 an enhancement 以支持多个 Flyway bean(Liquibase 也一样)。