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

Spring防尘套2。x列表绑定问题

公冶桐
2023-03-14

升级到Spring Boot 2x后,我在绑定一些列表时遇到了问题。代码在Spring 1中起作用。现在它在启动时抛出一个绑定错误。这是我的申请表。yml。。。

aws:
  geo-mappings:
    - name: USA
      regions:
        - us-west-2
        - us-west-1
        - us-east-1
        - us-east-2
    - name: California
      regions:
        - us-west-2

这是我的组件类...

package com.example.demo.config.aws;


import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by goer on 4/18/17.
 */
@Component
@Scope("singleton")
@ConfigurationProperties(prefix="aws")
public class AWSConfigProvider {

    private List<GeoMappingEntry> geoMappings = new ArrayList<>();

    public List<GeoMappingEntry> getGeoMappings() {
        return this.geoMappings;
    }


}

这是嵌套对象。。。

package com.example.demo.config.aws;

import java.util.ArrayList;
import java.util.List;


public class GeoMappingEntry {
    private String name;
    private List<String> regions = new ArrayList<>();

    public GeoMappingEntry(String name, List<String> regions) {
        this.name = name;
        this.regions = regions;
    }
}

当我试图逃跑时,我得到了...

申请无法启动

说明:

无法绑定“aws”下的属性。地理映射到java。util。列表:

Reason: Failed to bind properties under 'aws.geo-mappings' to java.util.List<com.example.demo.config.aws.GeoMappingEntry>

行动:

更新应用程序的配置

还有其他人遇到过同样的问题吗?解决方案?建议?

共有1个答案

归翔
2023-03-14

以防其他人看到类似的问题。事实证明,一些在以前版本的Spring中不起作用的环境变量现在能够实际创建绑定,这就是错误的来源。

在这种情况下,从环境var轻松绑定到诸如AWS_GEOMAPPINGS_0_REGIONS_0=us-West-2之类的列表以前不起作用,但现在起作用了。在Spring Boot 2.0之前,从环境var设置它的唯一方法是通过SPRING_APPLICATION_JSON传递JSON,这很有效,但如果您尝试使用其他封装它的JSON(如Terraform)进行部署,则会变得复杂。

 类似资料:
  • 我正在尝试使用spring boot和hibernate。当我使用存储库时,它工作得很好,但我正在尝试使用Hibernate会话来创建DAO,而这个DAO不是事务的一部分。 这是测试代码: 应用Java语言 UserBusinessImpl。java: 用户存储库。Java语言 用户DAO: 当我尝试getCurrentSession()时,它抛出了一个错误。openSession()与我的事务分

  • 我正在尝试使用现有的Gradle Spring MVC项目设置Spring执行器。我无法使用@EnableAutoConfiguration。不幸的是,我无法到达执行器endpoint,我想我遗漏了一些东西。 项目中的Spring依赖项包括: 我正在尝试使用以下内容配置project: 在属性文件中,我添加了: 没有启用执行器endpoint,当尝试访问它们时,我得到404。我经历了许多相关问题,

  • 我使用的是spring boot 2.0.0。M3带Spring防尘套启动器执行器。我启用了两项健康检查: healt check bean由自动配置创建,但不是由创建。的响应是404。 我做错了什么? 提前感谢 编辑: Mhm致动器项目是否与反应式和webflux一起工作?Ok发现了这个问题:https://github.com/spring-projects/spring-boot/issue

  • 我试图通过遵循这里的教程,使用Spring boot在Java中创建一个RESTful应用程序。我想修改它,以便可以从URL中提取标识符,并使用它来服务请求。 所以

  • 因此,我一直在尝试将我的YAML属性中的list属性添加到我创建的类中,不知何故,list绑定只能从YAML中识别逗号分隔的值。 鉴于这门课 还有这个yaml文件 如果我在某处the并打印,它将返回一个空列表,但如果我将yaml文件更改为此 然后绑定工作并返回一个包含值的数组列表。绑定有什么问题?

  • 我在本地系统上创建了一个带有Rest控制器和Oracle的spring boot应用程序,通过IDE它运行良好,mvn build was fine包也很好,但如果我将其作为可执行jar运行,我会得到以下错误。我有申请表。我提供的所有spring的属性。数据源,但这里我得到了错误。请告知。 这是我的pom.xml: 我正在尝试Spring Boot并尝试将其作为可执行的jar运行。