簡體   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