【问题标题】:How to create a Map from YAML configuation in spring boot?如何在 Spring Boot 中从 YAML 配置创建 Map?
【发布时间】:2020-01-05 11:37:54
【问题描述】:

我想在 spring boot 中创建一个 Map> 类型的地图,下面是我在 application.yml 和相关 java 类中配置的东西

labels:
  nodetypes:
    payment:
      - customerId
      - emailId
      - movileNumber
    profile:
    loyality:

@Data
@ConfigurationProperties(prefix = "labels")
@Component
public class NodeTypeToResponseProps {

    Map<String, List<String>> nodetypes = new HashMap<>();
}

但地图没有创建,我期待,将创建一个包含以下数据的地图

{payment : [customerId,emailId,movileNumber] ,profile:[] ,loyality:[] } 

这方面有什么帮助吗?

【问题讨论】:

  • 你启用了吗@EnableConfigurationProperties
  • 这个必须要加吗?
  • 对不起我的错误最新的spring版本不需要它,默认扫描它。 (您使用哪个版本?)也许它是一个 setter/getter 问题。你能自己添加你的 getter/setter 而不是 lombok 并再次测试它......比它对我有用
  • 弹簧靴 2.1.6
  • 好的,我现在用 2.1.6 测试了它,一切正常(使用 lombok)。你可以用你自己的 getter/setter 代替 lombok 试试吗,我们可以肯定,这不是 lombok 问题。

标签: java spring spring-boot yaml


【解决方案1】:

感谢所有试图帮助我解决问题的人,我在 build.gradle 中找到了这个插件的解决方案

id 'io.freefair.lombok' version '3.8.4'

它现在工作正常。

【讨论】:

    【解决方案2】:

    您必须在此 YAML 配置中创建具有属性名称的 Arraylists。比你的本质能够通过调用属性来调用你的对象。

    例子:

        YamlConfiguration yaml = new YamlConfiguration();
        HashMap<String, List<String>> nodetypes = new HashMap<>();
        //setter
        for(String key :nodetypes.keySet()) 
            yaml.set("path."+key,  nodetypes.get(key));
            yaml.set("path."+new String("keys"), nodetypes.keySet());
    
    
    
        //getter
        HashMap<String, List<String>> cp = new HashMap<>();
    
        for(String key:yaml.getStringList("path."+new String("keys")))
            cp.put(key, yaml.getStringList("path."+key));
    

    【讨论】:

      【解决方案3】:

      您可以尝试将@Component 放在@ConrigurationProerties 之前

      【讨论】:

        猜你喜欢
        • 2019-03-08
        • 1970-01-01
        • 1970-01-01
        • 2019-10-15
        • 1970-01-01
        • 2015-05-31
        • 1970-01-01
        • 2018-11-29
        相关资源
        最近更新 更多