原创:@configurationProperties从 yaml配置文件及映射到实体类并取值( spring boot中
案例要求 spring boot 及目录结构如如下:
1:元数据(Metadata),又称中介数据、中继数据,为描述数据的数据(data about data), 主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。 2:Spring boot 为了简化 xml配置,做了两个方面工作。 a)简化依赖配置:采用spring-boot-starter-xxxxx,其实中starter,只不过是把我们某一模块,比如web 开发时所需要的所有JAR 包打包好给我们而已。不过它的厉害之处在于,能自动把配置文件搞好,不用我们手动配置。所以说,Spring Boot 是简化配置。SGLF b)把SSM原来配置****applicationContent.xml的一些xml配置。 采用(appliction.yaml或application.properties)***.yamlt和properties格式配置。这两种格式确实比xml更简洁. |
本案例思路:
本案例重要性是为学习spring boot 配置做准备。两个实体类。a)Person实体类人,包括姓名、年龄、地址属性的类型为字面量。同时也包含数组、对象类型。其中拥有狗就是自定义类型 Dog实体类的类型。
操作步骤:
- 新建实体类dog类:
/** * Dog实体类,为Person实体类拥有Dog类型做准备 */ public class Dog { String dogName; Integer dogAge; public String getDogName() { return dogName; } public void setDogName(String dogName) { this.dogName = dogName; } public Integer getDogAge() { return dogAge; } public void setDogAge(Integer dogAge) { this.dogAge = dogAge; } @Override public String toString() { return "Dog{" + "dogName='" + dogName + '\'' + ", dogAge=" + dogAge + '}'; } }
- 新建实体类Person,并拥有Dog实体类
package com.ibaiqi.springboot2.domain; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; import java.util.List; import java.util.Map; /** * @ConfigurationProperties(prefix = "person") 此注解作用是将配置文件的值映射到类上使用。 * 即person来源application.yaml或application.propertiesk配置文件中的值。 * 把以此为为前辍的后边所有属性映身到此类 */ @Component @ConfigurationProperties(prefix = "person") public class Person { String userName; int age; String add; Dog dog; List<String> allAnimal; Map<String,Object> childs; public Dog getDog() { return dog; } public void setDog(Dog dog) { this.dog = dog; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getAdd() { return add; } public void setAdd(String add) { this.add = add; } public List<String> getAllAnimal() { return allAnimal; } public void setAllAnimal(List<String> allAnimal) { this.allAnimal = allAnimal; } public Map<String, Object> getChilds() { return childs; } public void setChilds(Map<String, Object> childs) { this.childs = childs; } @Override public String toString() { return "Person{" + "userName='" + userName + '\'' + ", age=" + age + ", add='" + add + '\'' + ", dog=" + dog + ", allAnimal=" + allAnimal + ", childs=" + childs + '}'; } }
- 新建yaml数据格式,存储在application.yaml中
person: userName: 张三 age: 18 add: 江苏南京 dog: dogName: 旺旺狗 dogAge: 5 allAnimal: [鸟,鸡,牛] childs: - childsName: 张大毛 sex: 男 age: 18 - childsName: 张二毛 sex: 女 age: 16
做产品的程序,才是好的程序员!