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

Spring Boot注入来自application.yml的地图列表

楚博雅
2023-03-14

我试图从Spring Boot配置注入映射列表,但得到一个空列表。如何正确注入?

cacheConfigs:
  - cacheOne:
       test: test1
  - cacheTwo:
       test: test2
  - cacheThree:
       test: test3
  - cacheFor:
       test: test4
@ConfigurationProperties(prefix = "cacheConfigs")
public List<Map<String, String>> getCacheConfigs() {
    return new ArrayList<>();
}

共有1个答案

洪鸿
2023-03-14

这对我来说是“新的”。我通过将缓存配置更深一层并使用新的顶级名称作为配置属性参数来实现这一点。这样地:

cache-configs-map:
  cacheConfigs: 
    - cacheOne:
        test: test1
    - cacheTwo:
        test: test2
    - cacheThree:
        test: test3
    - cacheFor:
        test: test4

现在,您的配置类如下所示:

@Configuration
public class Config{
    @NoArgsConstructor @AllArgsConstructor( staticName = "of" )
    @Getter @Setter
    public static class C{
        private List<Map<String, String>> cacheConfigs;
    }
    
    @Bean
    @ConfigurationProperties(prefix = "cache-configs-map")
    public C getC() {
        return new C();
    }
}
 类似资料:
  • 我引用了Spring boot-inject map from application.yml来从application.yml文件中注入map 下面是我的application.yml代码段 属性文件如下所示 但是,我发现只有当setter和getter的格式正确时才会发生值注入,即getPairMap和setPairMap。在使用getPairs或setpairs时不是这种行为的原因是什么

  • 问题内容: 我有一个带有以下内容的Spring Boot应用程序-基本上是从这里获取的: 我可以注入特定的值,例如 但是,我想注入整个地图,例如: 那(或类似的东西)可能吗?显然,我可以直接加载yaml,但是想知道Spring是否已经支持了某些东西。 问题答案: 你可以使用插入地图 使用问题中的yaml运行它会产生: 有多种选项可用于设置前缀,控制如何处理缺少的属性等。有关更多信息,请参见java

  • 我有一个带有以下的spring boot应用程序--基本上取自这里: 我可以注入特定的值,例如。 然而,我想注入整个地图,即如下所示: 那(或类似的事情)可能吗?显然,我可以直接加载yaml,但我想知道spring是否已经支持了一些东西。

  • 问题内容: 我有一个POJO和一个(当前尚未构建)的类,它将返回它的列表。我想自动生成将POJO作为地图进行访问所需的代码。这是一个好主意吗,是否可以自动执行,并且我需要为要处理的每个POJO手动执行此操作吗? 谢谢,安迪 问题答案: 您可以为此使用Commons BeanUtils 。 更新 :由于由于Android中某些明显的库依赖问题而导致该选项不可行,因此这是一个基本的启动示例,您几乎不需

  • 在我们项目的一个公共库中,我需要根据使用它的服务来区分一个接口的两个实现。 我通过构造函数注入来注入这个接口,并且需要找出如何根据我们的application.yml中的属性值来确定使用什么实现。 我查看了@Qualifier注释,但它似乎确实需要xml模式中的一个属性。我们没有这样的东西。 在我们代码的一部分中,我们以这种方式读出KafkaListener的属性 我可以在Spring中使用相同的