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容器,只有這個組件是容器中的組件,配置才生效。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM