一、背景
在 SpringBoot 中,我们可以使用 @Value
注解从属性文件(例如 application.yml
或 application.properties
)中获取配置信息,但是只能获取简单的字符串或数值类型的配置信息。
如果想从 yml 中获取对象等复杂的数据类型,可以使用 @ConfigurationProperties
注解。
二、application.yml
首先,我们在 application.yml
文件中指定了 china
前缀后面的 persons
里面存放了带有 name、sex、age 属性的对象。
china:
persons:
- name: 张三
sex: F
age: 24
- name: 李四
sex: M
age: 25
三、ChinaPersonFactory.java
ChinaPersonFactory.java
使用 @ConfigurationProperties
注解,指定 china
前缀,从 application.yml 文件中获取 china 前缀开头的 Person 对象数组。
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
import java.util.ArrayList;
import java.util.List;
/**
* <p> @Title ChinaPersons
* <p> @Description 从 yml 中获取 Person 对象
*
* @author ACGkaka
* @date 2023/3/23 19:11
*/
@Configuration
@ConfigurationProperties(prefix = "china")
public class ChinaPersonFactory {
// 这里的名字要和yml中的对应字段名称一致
private static List<Person> persons = new ArrayList<>();
// 注意此处的 static 关键字
public static List<Person> getPersons() {
return persons;
}
public void setPersons(List<Person> persons) {
ChinaPersons.persons = persons;
}
/**
* 基础人员信息
* 注意:该类要使用 static 关键字修饰,否则会报错。
*/
@Data
public static class Person {
// 姓名
private String name;
// 性别
private String sex;
// 年龄
private Integer age;
}
}
四、使用示例
做好以上准备工作后,我们可以在项目中通过调用如下代码获取配置中的对象数组:
List<Person> list = ChinaPersonFactory.getPersons()
整理完毕,完结撒花~ 🌻
参考地址:
1.Java获取yml文件的数组对象,https://blog.csdn.net/qq_41057885/article/details/121425355