1.基础配置概念
SpingBoot的核心配置是自动配置(或者叫默认配置),通过自动配置大大减少Spring项目的配置编写,但是在实际开发中,任然需要更具需求修该某些必要的参数配置,SpringBoot提供两种格式的配置:
application*.propertis
application*.yml (或者application*.yaml)
2.SpringBoot内置属性(applicaiton*.properties)
Spring Boot使用了一个全局的配置文件application.properties,放在src/main/resources目录下或者src/main/resources/config下。在 src/main/resources/config 下的优先级高 。Sping Boot的全局配置文件的作用是对一些默认配置的配置值进行修改
修改Tomcat的端口示例:
除了Tomcat端口以外,Spring Boot还定义了大量的内置属性,以下链接为Spring Boot官方提供的参考:
https://docs.spring.io/spring-boot/docs/2.1.11.RELEASE/reference/htmlsingle/#boot-features-external-config-application-property-files
3.自定义类型
-
基本类型
nickname=zslaa age = 22
-
JavaBean类型
user.nickname=zslaa user.age=22
-
数组/List集合
user.list = zslaa,jack,rose 或者 user.list[0]=zslaa user.list[1]=jack user.list[2]=rose
-
Map集合
user.map={nickname:'zslaa',age=22} 或者 user.map.nickname=zslaa user.map.age=22
4.Profile多环境配置
- 描述:
当应用程序需要部署到不同运行环境时,一些配置细节通常会有所不同,最简单的比如日志,生产日志会将日志级别设置为WARN或更高级别,并将日志写入日志文件,而开发的时候需要日志级别为DEBUG,日志输出到控制台即可。如果按照以前的做法,就是每次发布的时候替换掉配置文件,这样太麻烦了,Spring Boot的Profile就给我们提供了解决方案,命令带上参数就搞定。
2.建立不同环境的application.properties文件
在Spring Boot中多环境配置文件名需要满足application-{profile}.properties的格式,其中{profile}对应你的环境标识
3.每个文件里面的Tomcat访问端口不同
4.在application.yml里,指定环境需要激活的配置
5.运行引导类,查看结果
总结:结果看到,激活的配置是application-dev.yml。
3.SpringBoot内置属性(applicaiton*.yml/yaml)
1.yml格式的简介:
-
yml或yaml所表示的YAML Ain’t Markup Language,YAML是一种简洁的非标记语言,文件名后缀为yml,java中经常用它描述配置文件application.yml。YAML以数据为中心,比json/xml等更适合做配置文件。使用空白,缩进,分行组织数据,从而使得表示更加简洁易读。
-
在yml之前使用最多的配置文件形式是xml和properties文件。xml文件太过繁琐,看过的人都知道,想要新加一个配置节点的话还需要包含在<>标签里;而properties配置文件没有了标签,不过当你的配置有很多层级的时候,写完之后你会发现会有大量重复的代码。而yml/yaml文件结合了两者的优势,当你新增节点配置的时候,不需要标签,在写多层级配置的时候也不会产生重复代码。
2.yml格式的书写规则
1.大小写敏感
2.使用缩进表示层级关系
3.禁止使用tab缩进,只能使用空格键
4.缩进长度没有限制,只要元素对齐就表示这些元素属于一个层级。
5.使用#表示注释
6.字符串可以不用引号标注
3.yml格式的自定义属性
-
基本数据类型
nickname:zslaa age:22
-
JavaBean类型
user: nickname:zslaa age:22
-
数组/List集合
users: list: - zslaa - jack - rose
-
Map集合
user: map:{nickname:zslaa,age:22}
4.Profile多环境配置
-
定义不同环境的yml配置
-
配置指定环境
-
运行测试
总结:结果可以看到,使用的是application-prod.yml配置。