SpringBoot-获取YAML文件值
首先我们需要创建一个SpringBoot项目,在这个项目里面我们可以创建2个pojo类
第一个Person.class
@Component @ConfigurationProperties(prefix = "person") @Data public class Person { // 基本语法 private String lastName; private Integer age; private Boolean boss; private Date birthday; // 集合形式 private Map<String, Object> maps; private List<Object> lists; // 对象形式 private Dog dog; }
以上使用了lombok的依赖,所以直接使用@Data就可以覆盖这个pojo类的setter getter 和 toString方法
lombok的依赖如下
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.6</version> </dependency>
由于上面的Person类里面又关联了Dog类,所以添加下面的Dog.class
@Data public class Dog { private String name; private Integer age; }
接下来我们就要配置application.yaml文件里面的内容了,与Person类的字段要一一对应
application.yaml
person: lastName: "张三" age: 18 boss: false birthday: 2018/01/25 # 行内式 maps: {key1: value1, key2: value2} lists: - lisi - pcliu - tom dog: name: 小狗 age: 2
书写好以上的信息以后就要思考如何将配置文件中配置的每一个属性的值,映射到这个组件中?
主要使用Person类当中的@ConfigurationProperties这个注解:告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定;
它当中的默认参数prefix = "person":配置文件中哪个下面的所有属性进行一一映射
最后使用@Component这个注解:只有这个组件是容器中的组件,才能容器提供的@ConfigurationProperties功能
注意还要在pom.xml文件里导入以下的依赖:导入配置文件处理器,配置文件进行绑定就会有提示
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency>
最后我们就可以在测试类里面进行打印yaml文件里面的值
@RunWith(SpringRunner.class) @SpringBootTest public class Springboot01YamlApplicationTests { @Autowired private Person person; @Test public void contextLoads() { System.out.println(person); } }
最后得出的结果就如下图