繁体   English   中英

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作为参数。

https://github.com/spring-projects/spring-boot/blob/master/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/autoconfigure/EndpointAutoConfiguration.java#L187

我的项目使用多个Flyway bean来管理许多数据库的迁移,当我尝试启动应用程序时,Spring抱怨NoUniqueBeanDefinitionException。

当我禁用EndpointAutoconfiguration时,正确创建上下文。 我此时不一定需要Flyway端点,但是我们还有其他端点用于监控,因此我不想禁用所有端点。 我试图在application.properties文件中使用禁用flyway端点

endpoints.flyway.enabled=false

但是Spring仍然抱怨(我认为它无论如何都试图创建端点bean,'enabled'属性用于确定端点在运行时的可用性)。

我认为目前我唯一的选择是手动启用我需要的端点并禁用自动配置。 是对的吗?

而且,还有一个原因,为什么FlywayEndpoint仅适用于单个Flyway bean? 根据我的理解,构造函数可以只获取一个Flyway bean列表,然后invoke()方法可以迭代它们。

https://github.com/spring-projects/spring-boot/blob/master/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/endpoint/FlywayEndpoint.java#L54

我认为目前我唯一的选择是手动启用我需要的端点并禁用自动配置。 是对的吗?

是的,我认为这是对的。 你看到的行为是一个错误,所以我打开了一个问题 我们将在1.4.1和1.3.8中修复它。

而且,还有一个原因,为什么FlywayEndpoint仅适用于单个Flyway bean?

除了我们没有考虑你的用例之外没有理由。 我已经为端点打开了一个增强功能 ,以支持多个Flyway bean(对于Liquibase也是如此)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM