【问题标题】:Spring boot - binding properties [Configuration properties]Spring boot - 绑定属性【配置属性】
【发布时间】:2020-06-14 03:43:57
【问题描述】:

我在 Spring Boot 版本上工作:2.0.2.RELEASE。在我的application.yml 我有:

cars:
  color-to-brands:
    red: car1, car2
    blue: car3, car4

我的配置类如下所示:

@Getter @Setter
@Configuration
@ConfigurationProperties(prefix = "cars")
public class CarsProperties {

    private Map<String, List<String>> colorToBrands = Collections.emptyMap();
}

当我启动应用程序时,我不断收到:

未能将“cars.color-to-brands”下的属性绑定到 java.util.Map>:

Reason: Failed to bind properties under 'cars.color-to-brands' to java.util.Map<java.lang.String, java.util.List<java.lang.String>>

行动:

更新应用程序的配置

现在,总结一下我已经为修复它所做的工作:

  1. According to documentation添加了一个依赖项@ConfigurationProperties 的注释处理器:
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-configuration-processor</artifactId>
  <version>${spring-boot.version}</version>
  <optional>true</optional>
</dependency>
  1. 我已启用注释处理器。我正在使用 Intellij。 Annotation processors -> Maven default annotation processors profile 已勾选 Enable annotation processing, Processor path: 包含 (...)\.m2\repository\org\springframework\boot\spring-boot-configuration-processor\2.0.2.RELEASE\spring-boot-configuration-processor-2.0.2.RELEASE.jar, Store generated sources relative to: Module content root,

  2. 在 pom 文件中,我为此处理器添加了路径(其中我 使用):

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
  <source>1.8</source>
  <target>1.8</target>
  <annotationProcessorPaths>
      <path>
          <groupId>org.projectlombok</groupId>
          <artifactId>lombok</artifactId>
          <version>${lombok.version}</version>
      </path>
      <path>
          <groupId>org.mapstruct</groupId>
          <artifactId>mapstruct-processor</artifactId>
          <version>${mapstruct.version}</version>
      </path>
      <path>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-configuration-processor</artifactId>
          <version>${spring-boot.version}</version>
      </path>
  </annotationProcessorPaths>
  <compilerArgs>
      <compilerArg>
          -Amapstruct.defaultComponentModel=spring
      </compilerArg>
  </compilerArgs>
</configuration>
  1. 此外,intellij 不断向我显示CarsProperties 内的弹出窗口:

重新运行 Spring Boot 配置注解处理器进行更新 生成的元数据

  1. 我已经跳过@EnableConfigurationProperties 为:

Spring Boot documentation 说,每个项目都会自动包含 @EnableConfigurationProperties。

  1. 介于两者之间的某个地方我也做过:Reimport All Maven Projectsclean installRebuild projectInvalid Caches and Restart

我现在坐在那台电脑前几个小时,无法完成。我究竟做错了什么 ?为什么它不想工作?

【问题讨论】:

    标签: spring spring-boot


    【解决方案1】:

    将 Spring Boot 版本更新为 2.1.6.RELEASE 并已修复

    【讨论】:

      猜你喜欢
      • 2019-05-19
      • 2016-02-27
      • 1970-01-01
      • 2019-05-12
      • 1970-01-01
      • 2020-12-21
      • 1970-01-01
      • 2020-05-02
      • 2021-05-10
      相关资源
      最近更新 更多