(一)SpringBoot使用的全局配置文件为:
• application.properties
• application.yml
虽然后缀不一样,但是项目中有一个就可以了,yml格式比properties格式的简洁一些。
这个文件的位置在配置文件放在src/main/resources目录或者类路径/config下。如图:
默认是properties格式,我自己创建的了一个yml
全局配置文件的作用是:可以对一些默认配置值进行修改。
我们主要以yml格式的来学习。
①基本语法:(注意冒号的中英文)
k:(空格)v:(值)
表示一对键值对(空格必须有);以空格的缩进来控制层级关系;只要是左对齐的一列数据,都是同一个层级的
server:
port: 8088
path: /hello
port和path就属于一个级别。
②对象、Map(属性和值)(键值对):
对象:
persion:
name: 张三
age: 21
#行内显示:
persion: {name: 张三,age: 21}
③数组(List、Set):用-值表示数组中的一个元素
zoo:
‐cat
‐dog
‐pig
#行内显示:
zoo: [cat,dog,pig]
(二)配置文件的注入
创建二个实体类:(一个Person类,一个Dog类。Person中有个属性是Dog类型的)
package com.example.springboot02.bean;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* 将配置文件中配置的每一个属性的值,映射到这个组件中
* @ConfigurationProperties:告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定;
* prefix = "person":配置文件中哪个下面的所有属性进行一一映射
*
* 只有这个组件是容器中的组件,才能容器提供的@ConfigurationProperties功能;
*
*/
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
private String lastName;
private Integer age;
private Boolean boss;
private Date birth;
private Map maps;
private List
package com.example.springboot02.bean;
public class Dog {
private String name;
private Integer age;
//这里省略get set toString方法 自行补全
}
在yml中进行配置:
person:
lastName: hello
age: 18
boss: false
birth: 2017/12/12
maps: {k1: v1,k2: 12}
lists:
‐ lisi
‐ zhaoliu
dog:
name: 小狗
age: 12
添加一个依赖:
我们可以导入配置文件处理器,以后编写配置就有提示了
org.springframework.boot
spring-boot-configuration-processor
true
在test下运行:
目录结构为:
找到test:
结果和我们yml中设置的一样
properties格式的配置:
properties的全局文件配置默认是utf-8格式的,我们需要设置为ASC,程序才成读出来。
同样application.peoperties的配置
server.port=8081
# idea配置文件utf-8
# 配置persion的值
person.last-name=张三
person.age=21
person.birth=2017/12/15
person.boss=false
person.maps.k1=v1
person.maps.k2=14
person.lists=a,b,c
person.dog.name=小狗
person.dog.age=15
最终和yml配置的结果是一样的。
下一节:第四章:SpringBoot配置(@ConfigurationProperties注解)