SpringBoot的配置文件
SpringBoot配置文件类型
SpringBoot配置文件类型和作用
SpringBoot是基于约定的,所以很多配置都有默认值,但如果想使用自己的配置替换默认配置的话,就可以使用application.properties或者application.yml(application.yaml)进行配置。
SpringBoot默认会从Resources目录下加载application.properties或application.yml(application.yaml)文件
其中,application.properties文件是键值对类型的文件,之前一直在使用,所以此处不在对properties文件的格式进行阐述。除了properties文件外,SpringBoot还可以使用yml文件进行配置。
application.yml配置文件
properties文件配置方式在上篇末尾
yml配置文件简介
YML文件格式是YAML (YAML Aint Markup Language)编写的文件格式,YAML是一种直观的能够被电脑识别的的数据数据序列化格式,并且容易被人类阅读,容易和脚本语言交互的,可以被支持YAML库的不同的编程语言程序导入,比如: C/C++, Ruby, Python, Java, Perl, C#, PHP等。YML文件是以数据为核心的,比传统的xml方式更加简洁。
YML文件的扩展名可以使用.yml或者.yaml。
加载顺序
配置普通数据
语法: key: value
配置对象数据
语法:
key:
key1: value1
key2: value2
或者:
key: {key1: value1,key2: value2}
#对象的配置 语法:
#
# key:
# key1: value1
# key2: value2
person:
name: wangwu
age: 20
addr: beijing
# 或者:
#行内对象配置 key: {key1: value1,key2: value2}
#person: {name: wangwu,age: 18, addr: beijing}
student:
name: tom
age: 18
addr: shanghai
配置Map数据
#Mappe配置:
#map:
# key1: value1
# key2: value2
配置数组(List、Set)数据
key:
- value1
- value2
或者:
key: [value1,value2]
city:
- beijing
- tianjin
- shenyang
#或者
city: [beijing,tianjin,shanghai,chongqing]
#集合中的元素是对象形式
student:
- name: zhangsan
age: 18
score: 100
- name: lisi
age: 20
score: 78
- name: wangwu
age: 30
score: 91
配置文件与配置类的属性映射方式
使用注解@Value映射
我们可以通过@Value注解将配置文件中的值映射到一个Spring管理的Bean的字段上
application.yml配置如下:
person:
name: zhangsan
age: 20
实体代码如下:
@Controller
public class QuickController {
@Value("${name}")
private String name;
@Value("${addr}")
private String addr;
@RequestMapping("/quick")
@ResponseBody
public String quick2(){
//获得配置文件信息
return "name"+name;
}
}
浏览器访问地址 显示
使用注解@ConfigurationProperties映射
通过注解@ConfigurationProperties(prefix=“配置文件中的key的前缀”)可以将配置文件中的配置自动与实体进行映射
application.yml配置如下:
person:
name: zhangsan
age: 20
@Controller
@ConfigurationProperties(prefix = "person")//匹配对象名 字段自动跟属性进行匹配
public class Quick3Controller {
private String name;
private String addr;
@RequestMapping("/quick3")
@ResponseBody
public String quick2(){
//获得配置文件信息
return "name"+name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
}
使用@ConfigurationProperties方式可以进行配置文件与实体字段的自动映射,但需要字段必须提供set方法才可以,而使用@Value注解修饰的字段不需要提供set方法
springboot的yaml多文档模块
--- 把文档分成多个模块
server:
port: 8082
# 指定用哪个配置
spring:
profiles:
active: test
---
server:
port: 8083
spring:
profiles: dev
---
#---多文档分割 代表分成三个不同的文档
server:
port: 8084
spring:
# 起名字
profiles: test