SpringBoot 读取配置文件(yml)中的属性值,基本数据类型、集合、数组、对象

有时我们需要从 yml 配置文件中获取数据和值,假设现在是一个 Springboot 项目,下面分享怎样从 yml 文件中读取基本数据类型、数组、集合、Map 以及单独一个对象 bean 的值。

以上可以分成两组,基本数据类型、数组和剩下其他,因为基本数据类型和数组的值都能通过注解@Value形式直接读取出来。

一、基本数据类型、数组

1、.pom文件添加依赖

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-configuration-processor</artifactId>
	<optional>true</optional>
</dependency>

2、.yml 配置数据

all-custom-data:
  includes: 数组元素1,数组元素2
  basic-string: 字符串
  basic-int: 100
  basic-float: 100f
  basic-double: 100.00

3、创建一个测试用例,使用如下代码获取

@RunWith(SpringRunner.class)
@SpringBootTest
public class LianxingProtocolApplicationTests {
	@Value("${all-custom-data.includes}")
	private String[] includes;

	@Value("${all-custom-data.basic-string}")
	private String basicString;

	@Value("${all-custom-data.basic-int}")
	private int basicInt;

	@Value("${all-custom-data.basic-float}")
	private float basicFloat;

	@Value("${all-custom-data.basic-double}")
	private double basicDouble;

	@Test
	public void propsTest() throws JsonProcessingException {
		System.out.println("==1==="+ Arrays.toString(includes));
		System.out.println("==2==="+ basicString);
		System.out.println("==3==="+ basicInt);
		System.out.println("==4==="+ basicFloat);
		System.out.println("==5==="+ basicDouble);
	}
}

控制台打印结果如下:

==1===[数组元素1, 数组元素2]
==2===字符串
==3===100
==4===100.0
==5===100.0

所以上面的数据都能用注解很简单的获取。

集合

集合的数据不能用@Value获取,比如现在 .yml中有这样一个集合。

all-custom-data:
  listData:
    - 集合元素2
    - 集合元素2

创建一个配置类,记得带上注解,需要使用时,调用里面定义的方法。

@Component
@ConfigurationProperties(prefix="all-custom-data") 
public class MyProps {
    private List<String> listData = new ArrayList<>();
    public List<String> getListData() {
        return listData;
    }
}

再来看 Map 数据

 all-custom-data:
  mapData:
    key1: value1
    key2: value2

配置类中代码是这样的

private Map<String, String> mapData = new HashMap<>(); //接收 mapData 里面的属性值
//创建对应属性值的 Get 方法
public Map<String, String> getMapData() {
		return mapData;
	}

对象

如果要在 .yml中创建一个对象,然后在代码中使用,其实和前面差不多。

custom-user:
  name: 张三
  age: 14
  sex: 1

创建一个 bean 来接收配置信息,记得属性名和配置文件中一致,而且添加 Get 、Set 方法。

@Component
@ConfigurationProperties(prefix="custom-user")
public class CustomUser {
    private String name;
    private int age;
    private int sex;

    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;
    }

    public int getSex() {
        return sex;
    }

    public void setSex(int sex) {
        this.sex = sex;
    }

    @Override
    public String toString() {
        return "CustomUser{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", sex=" + sex +
                '}';
    }
}

使用时只要自动注入就行

	@Autowired
	private CustomUser customUser;
	
	System.out.println("====="+ customUser.toString());

ok,基本就这些。

本文由老郭种树原创,转载请注明:https://guozh.net/springboot-reads-the-attribute-value-in-the-configuration-file/

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注