YML配置文件
SpringBoot使用一个全局的配置文件,配置文件名称是固定的
- application.properties
- 语法:key=value
- application.yml
- 语法:key:空格 value
配置文件的作用:修改SpringBoot自动配置的默认值,因为SpringBoot在底层都给我们自动配置好了
YAML(YML)
XML配置:
<server>
<port>8080</port>
</server>
YML配置
server:
port: 8080
# 空格是不能缺少的
yml与properties进行对比
application.properties
#只能保存键值对
name=kang
student.name=kang
student.age=1
application.yml
#k=v
#对空格的要求十分高
#注入到我们的配置类
#普通的key-value
name: kang
#对象
student:
name: kang
age: 1
#对象行内写法
student: {name: kang,age: 1}
#数组
pets:
- cat
- dog
- pig
#数组行内写法
pets: [cat,dog,pig]
yml可以给实体类赋值(注入)
-
定义一个pojo包下的Person类
@Data //lombok的注解,在编译时修改源码 @Component //这个注解相当于<bean id= ...> @ConfigurationProperties(prefix="person") //另一种方式,加载指定的配置类 @PropertySource(value="classpath:kang.properties"),然后在每个属性上@Vale("$(name)") public class Person{ @Value("老王") private String name; private Integer age; private Boolean happy; private Date birth; private Map<String,Object>maps; private List<Object> lists; private Dog dog; }
-
yml
person: name: kang$(random.uuid) age: 1 happy: false birth: 2019/11/02 #maps是一个键值对,是一个对象 maps: {k1: v1,k2: v2} #或者 maps: k1: v1 k2: v2 #lists是一个集合框架,它是一个数组 lists: - code - music - girl #dog是一个类 dog: name: 旺财 #name: ${person.hello:hello}_旺财 age: 1
-
使用@ConfigurationProperties注解
- 如果不配置使用了这个注解就会提示爆红
-
如何绑定
-
加上prefix="person"
@ConfigurationProperties(prefix="person")
-
绑定起来就有注入的值了
-
测试:@Autowired
Person person=new Person();
多环境配置及配置文件位置
配置文件加载优先级:从上到下
- file:./config/
- file:./
- classpath:/config/
- classpath:/
多环境切换
properties
springboot的多环境配置,可以选择激活哪一个环境
spring.profiles.active=dev
- application.properties
- application-dev.properties
- application-test.properties
yml
通过---,不用分多个文件
server:
port:8081
#默认当前,可选择激活版本
spring:
profiles:
active:dev
---
server:
port:8082
spring:
profiles: dev
---
server:
port:8083
spring:
profiles:test
#spring.profile起名
网友评论