给SpringBoot赋值的方式有多种,其中最常用的就是用yaml语法来配置,我们来创建两个实体类来演示用yaml给实体类来赋值。
实体类Dog(省略了有、无参构造器、get set方法和toString)
//表示将这个类添加到spring组件中
@Component
public class Dog {
private String name;
private int age;
private String sex;
实体类Person(省略了有、无参构造器、get set方法和toString)
public class Person {
private String name;
private int age;
private Boolean happy;
private Date birth;
private Map<String, Object> maps;
private List<Object> lists;
private Dog dog;
在application.yaml中给对象赋值
在资源文件夹中创建一个application.yaml用来写yaml语法,当我们在给属性赋值时要注意,yaml语法形式是key value的,中间是有空格的,如果删掉空格,那么它的属性或对象就无效了。还有就是注意属性要在对象下一行加一个空格再写,这样才能表示这个属性是属于person对象的。
person:
name: GAO
age: 23
happy: true
birth: 2023/3/7
maps: {k1: g1,k2: g2}
lists: [music,code,ball]
dog:
name: 大师
age: 3
在Person类种可以利用@ConfigurationProperties(prefix = "person")注解进行关联prefix的属性必须要和application.yaml中的对象名相同,其中的属性名称也要和Person类中的属性名称要对应,否则会报null。
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
private String name;
private int age;
private Boolean happy;
private Date birth;
private Map<String, Object> maps;
private List<Object> lists;
private Dog dog;
注意:当我们使用@ConfigurationProperties 注解时会发现最上面横幅报红,意思时提示你pom.xml文件缺少源数据的提示依赖的代码,这里我们只需要手动把需要的代码添加到pom.xml文件中去就行了。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
@ConfigurationProperties的作用
-
将配置文件中配置的每一个属性的值,映射到这个组件中。
-
告诉springboot将本类中的所有属性和配置文件中相关的配置进行绑定参数prefix = "person":将配置文件中的person下面的所有属性一一对应。
-
只有这个组件是容器中的组件,才能使用容器提供的@ConfigurationProperties功能。