• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

SpringBoot 升级至 2.6.3 项目启动报错-documentationPluginsBootstrapper

武飞扬头像
极客公园℡
帮助1

SpringBoot 升级至 2.6.3 项目启动报错-documentationPluginsBootstrapper

关键词:Failed to start bean ‘documentationPluginsBootstrapper’ management SpringBoot2.6.3

前言

近期搞了搞版本升级,都是泪。升级使我更强大,天天加班排BUG

版本升级要慎重!

版本升级要慎重!

版本升级要慎重!

废话不多数,解决方案如下。

一、配置文件

spring:
  mvc:
    pathmatch:
      matching-strategy: ant_path_matcher

必须添加此配置

如果你的项目引入 spring-actuator 且 没有配置management.server。加上上述配置后,启动项目大概率还会报错。

正常启动配置

management:
  endpoints:
    web:
      exposure:
        include: '*'
      base-path: /actuator
  server:
    port: 8083

异常启动配置

management:
  endpoints:
    web:
      exposure:
        include: '*'
      base-path: /actuator

原因为何,自行看源码 org.springframework.boot.actuate.autoconfigure.endpoint.web.servlet.WebMvcEndpointManagementContextConfiguration

二、解决方案

解决方法一

添加 management.server 配置。

缺点:每个工程都要使用两个端口,不够灵活

解决方法二(推荐)

添加下面配置

 /**
     * @see org.springframework.boot.actuate.autoconfigure.endpoint.web.servlet.WebMvcEndpointManagementContextConfiguration
     *
     * @return
     */
    @Bean
    @ConditionalOnManagementPort(ManagementPortType.SAME)
    public WebMvcEndpointHandlerMapping webEndpointServletHandlerMapping(WebEndpointsSupplier webEndpointsSupplier, ServletEndpointsSupplier servletEndpointsSupplier, ControllerEndpointsSupplier controllerEndpointsSupplier, EndpointMediaTypes endpointMediaTypes, CorsEndpointProperties corsProperties, WebEndpointProperties webEndpointProperties, Environment environment) {
        List<ExposableEndpoint<?>> allEndpoints = new ArrayList<>();
        Collection<ExposableWebEndpoint> webEndpoints = webEndpointsSupplier.getEndpoints();
        allEndpoints.addAll(webEndpoints);
        allEndpoints.addAll(servletEndpointsSupplier.getEndpoints());
        allEndpoints.addAll(controllerEndpointsSupplier.getEndpoints());
        String basePath = webEndpointProperties.getBasePath();
        EndpointMapping endpointMapping = new EndpointMapping(basePath);
        boolean shouldRegisterLinksMapping = webEndpointProperties.getDiscovery().isEnabled() &&
                (org.springframework.util.StringUtils.hasText(basePath) || ManagementPortType.get(environment).equals(ManagementPortType.DIFFERENT));
        return new WebMvcEndpointHandlerMapping(endpointMapping, webEndpoints, endpointMediaTypes, corsProperties.toCorsConfiguration(), new EndpointLinksResolver(allEndpoints, basePath), shouldRegisterLinksMapping, null);
    }
学新通

总结

声明

以上内容均来源于网络,如有错误,请多多包含。

参考文献

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgagfgj
系列文章
更多 icon
同类精品
更多 icon
继续加载