【问题标题】:Spring boot application fails to run because of bean naming violation由于 bean 命名冲突,Spring Boot 应用程序无法运行
【发布时间】:2019-11-07 13:04:10
【问题描述】:

我收到此错误:

APPLICATION FAILED TO START
***************************

Description:

Configuration property name 'appConfig.baseVersion' is not valid:

    Invalid characters: 'C'
    Bean: paymentCheckoutRequestBuilder
    Reason: Canonical names should be kebab-case ('-' separated), lowercase alpha-numeric characters and must start with a letter

Action:

Modify 'appConfig.baseVersion' so that it conforms to the canonical names requirements.

paymentCheckoutRequestBuilder 是 PaymentCheckoutRequestBuilder 类的 bean。我应该如何解决这个问题,你不能在 kebab-case 中命名一个类。

另外,这个错误发生在我尝试将我的 spring-boot 升级到 2.2.0 之后。

这个 appConfig.baseVersion 是什么,在网上找不到任何东西。

【问题讨论】:

    标签: java spring maven spring-boot


    【解决方案1】:

    这是不言自明的:原因:规范名称应该是 kebab-case 请注意,@ConfigurationProperties 不应该是驼峰式的。 所以你应该为你的目标bean修复@ConfigurationProperties的前缀。

    【讨论】:

      【解决方案2】:

      property appConfig.baseVersion 是驼峰式的,所以你应该在配置中使用 use 前缀,如下所示

           mqConfig:
               enable: false
           
      

      那么你的配置文件必须有@ConfigurationProperties(prefix = "mq-config")

      对于当前示例,application.yaml 应该是

      appConfig:
         baseVersion: 1
      

      而java类应该是

      @Configuration
      @ConfigurationProperties(prefix = "app-config")
      public class TestConfig {
        int baseVersion;
       }
      

      还有

      【讨论】:

        【解决方案3】:

        我想通了。很长一段时间我都认为问题出在paymentCheckoutRequestBuilder。真正的问题在于appConfig.baseVersion,它被定义为@ConfigurationProperties 注释类之一中的前缀。我更改了名称并且它起作用了。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-10-03
          • 2021-06-03
          • 2021-08-15
          • 1970-01-01
          • 1970-01-01
          • 2018-05-08
          相关资源
          最近更新 更多