SpringBoot配置文件中Map和List类型如何配置

对象、Map(属性和值)

例如配置类中的字段为:

Map<String,Object> maps;

在yml配置文件中,行内写法:

person.maps: {key1: value1,key2: value2}

需要注意冒号(:)后的空格,或者

person:
  maps:
   key: value

在properties配置文件中

person.maps.key=value

数组(List、Set)

在yml配置文件中

person:
 list:
 - 1
 - 2
 - 3

行内写法

person:
 list: [1,2,3]

在properties配置文件中

person.list[0]=1
person.list[1]=2
person.list[2]=3

配置List<Bean>

创建dto对象

@Data
@NoArgsConstructor
public class ActionDto {
    private String nameC;
    private String nameE;
}

yml配置

action:
  list:
    - nameC: asd
      nameE: asd1
    - nameC: qwe
      nameE: qwe1

config注入

@Data
@Component
@ConfigurationProperties(prefix = "action")
public class ActionConfig {
    private List<ActionDto> list;
}

也可以采用map的方式装配。

yml配置(两种方式都可以,选一种即可)

action1:
  map:
    asdasd: qwe
    zxczxc: ewq
 
action2: "{key1: 'value1', key2: 'value2'}"

config注入:

@Data
@Component
@ConfigurationProperties(prefix = "action1")
public class ActionConfig {
    private Map<String, String> map;
}
@Data
@Component
public class ActionConfig {
    @Value("#{${action2}}")
    private Map<String, String> maps;
}

自定义配置属性

Spring Boot提供自定义配置组件,拿前面举例的属性来写一个规范的配置文件:

@Component // 或者@Configuration
@ConfigurationProperties(prefix = "person")
public class Person {
    private Map<String, Object> maps;
    private List<String> list;
    private String name;
    private int age;

    public Map<String, Object> getMaps() {
        return maps;
    }

    public void setMaps(Map<String, Object> maps) {
        this.maps = maps;
    }

    public List<String> getList() {
        return list;
    }

    public void setList(List<String> list) {
        this.list = list;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

@ConfigurationProperties 注解向Spring Boot声明该类中的所有属性和配置文件中相关的配置进行绑定。prefix = "person":声明配置前缀,将该前缀下的所有属性进行映射。

@Component 或者@Configuration:将该组件加入Spring Boot容器,只有这个组件是容器中的组件,配置才生效。

 

posted @ 2022-01-18 09:18  残城碎梦  阅读(2566)  评论(0编辑  收藏  举报