代码之家  ›  专栏  ›  技术社区  ›  TrongBang

spring如何映射自定义pojo列表

  •  0
  • TrongBang  · 技术社区  · 6 年前

    在application.yml文件中,我想定义一个规则列表。

    rules:
       - name: abc
         value: something
       - name: edf
         value: something
    

    然后我想定义这样的服务

    @Service
    public class MyService {
       public MyService(@Value("${rules}") List<Rule> rules) {
       }
    }
    

    对于规则pojo,它是这样的。

    public class Rule {
       public String name, value;
    }
    

    目前,我面临着这些错误。

    1. 如果我把规则留空,它就会抛出 can't convert String to List<Rule>

      规则:[ ]

    2. 如果我保留这些值,它就会抛出 could not resolve placeholder 'rules'

    我真的不知道我做错了什么。

    1 回复  |  直到 6 年前
        1
  •  0
  •   TrongBang    6 年前

    从Spring Docs,我找到了这个。

    使用@value(${property})注释注入配置 属性有时是繁琐的,特别是如果你正在工作。 具有多个属性,或者您的数据本质上是分层的。 spring boot提供了一种处理属性的替代方法 它允许强类型bean控制和验证配置 你的申请

    链接: https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-features-external-config-typesafe-configuration-properties

    最后,我要介绍另一门课。

    @Configuration
    @ConfigurationProperties(prefix="rules")
    public class Rules {
       public List<Rule> list;
    }
    

    然后我自动接通 MyService .