Spring如何映射自定义pojo的列表



在我的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'

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

从Spring文档中,我发现了这一点。

使用@Value("${property}"(注释注入配置属性有时会很麻烦,尤其是当您正在工作时具有多个属性,或者您的数据本质上是分层的。Spring Boot提供了一种使用属性的替代方法它允许强类型bean管理和验证配置的

链接:https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html#boot-具有外部配置类型安全配置属性

最后,我要介绍另一个班。

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

然后我在MyService中自动布线。

最新更新