当前位置: 首页 > 知识库问答 >
问题:

Spring引导执行器FlywayEndpoint不能与多个Flyway bean一起工作

唐宇定
2023-03-14

我正在尝试将我目前正在进行的项目从Spring Boot1.2.8升级到最新版本(1.4.0)。我发现,自1.3.0版本以来的Spring Boot执行器将Flyway迁移作为执行器endpoint公开。此endpoint将单个Flyway bean作为参数

https://github.com/spring-projects/spring-boot/blob/master/spring-boot-acture/src/main/java/org/springframework/boot/actuate/autociguration/endpointautociguration.java#L187

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

当我禁用EndPointaToConfiguration时,会正确创建上下文。此时我不一定需要Flywayendpoint,但我们确实使用其他endpoint进行监视,因此我不想禁用所有endpoint。我尝试在application.properties文件中禁用flywayendpoint,使用

endpoints.flyway.enabled=false

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

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

此外,是否有原因,为什么FlywayEndpoint只能在单个Flyway bean存在时工作?根据我的理解,构造函数只需要一个Flyway bean列表,invoke()方法就可以迭代它们。

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

共有1个答案

巩才捷
2023-03-14

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

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

此外,是否有原因,为什么FlywayEndpoint只能在单个Flyway bean存在时工作?

除了我们没有考虑过您的用例之外,没有别的原因。我为endpoint打开了一个增强功能,以支持多个Flyway bean(对Liquibase也是如此)。

 类似资料:
  • 我已经使用springboot+camel开发了简单的基于cxfrs的路由,但是当我添加spring-boot-starter-actulator并将其作为@springbootapplication运行时: Spring致动器endpoint类似/health不工作,并返回http 404。 应用程序.属性 更新:如果我添加了spring-boot-starter-web,它将显示http://

  • 我添加了执行器依赖 按照教程中的建议 但是当我点击时,它不会给出预期的结果。上面写着 Spring Boot版本为1.5.4。和Java1.8需要做哪些附加设置?

  • 执行器功能是通过在项目中添加“Spring-启动-启动-执行器”来提供的。 此时,security被禁用,因此项目不会导入Spring-Security。 使用spring-boot 1.5.x,所有执行器endpoint(自动提供,作为/info,以及我特定定义的endpoint)都正常工作。 使用spring-boot 1.5.x时,tomcat.version=9.0.0.m9 使用spri

  • 但我想要一些我可以调用从AWS弹性负载均衡器/自动缩放组。默认情况下,如果一个实例未通过健康检查,ELB/ASG将终止它并用一个新的实例替换它。问题是一些健康检查,如DataSourceHealthIndicator,会在数据库关闭时向下报告,但我的应用程序实例在其他方面是完全健康的。如果我使用默认行为,AWS将抛出完全正常的实例,直到数据库重新启动,这将导致我的账单增加。 我可以去掉DataSo

  • 尝试在调用以下命令时保护spring Actuctor服务/管理上下文路径: http://localhost:9091/manage/metrics 在yalm.properties中使用此配置 。 带有安全执行器服务层Git分支 Spring Security配置: '@override protected void configure(HttpSecurity http)引发异常{

  • 从这份官方文件中,很难确定这两个模块之间有什么区别。 谁能提供一个官方和规范的答案来解释两者的区别吗?