Spring Boot 提供了大量的自动配置,极大地简化了spring 应用的开发过程,当用户创建了一个 Spring Boot 项目后,即使不进行任何配置,该项目也能顺利的运行起来。当然,用户也可以根据自身的需要使用配置文件修改 Spring Boot 的默认设置。
SpringBoot 默认使用以下 2 种全局的配置文件,其文件名是固定的。
application.properties
application.yml
application.properties与 application.yaml都可以作为Spring Boot的配置文件,只是书写格式不同而已,在 Spring Boot 启动时被自动读取。当然也可以同时使用,但同级目录下读取的顺序是先读取application.properties,读取application.yaml。该配置文件的存放路径如下图所示。
本节我们将详细介绍 application.properties的语法及使用。
YAML 简介
YAML 全称 YAML Ain't Markup Language,它是一种以数据为中心的标记语言,比 XML 和 JSON 更适合作为配置文件。YAML文件格式是Spring Boot支持的一种JSON超集文件格式。相较于传统的Properties配置文件,YAML文件以数据为核心,是一种更为直观且容易被电脑识别的数据序列化格式。application.yaml文件的工作原理和application.properties一样。
想要使用 YAML 作为属性配置文件(以 .yml 或 .yaml 结尾),需要将 SnakeYAML 库添加到 classpath 下,Spring Boot 中的 spring-boot-starter-web 或 spring-boot-starter 都对 SnakeYAML 库做了集成, 只要项目中引用了这两个 Starter 中的任何一个,Spring Boot 会自动添加 SnakeYAML 库到 classpath 下。
下面是一个简单的 application.yml 属性配置文件。
server:
port: 8081
YAML 语法
YAML 的语法如格式:
key: value
示例代码
server:
port: 8081 path: /hello
YAML 的语法如下:
- 使用缩进表示层级关系。
- 缩进时不允许使用 Tab 键,只允许使用空格。
- 缩进的空格数不重要,但同级元素必须左侧对齐。
- 大小写敏感。
- 字符串无需加引号,如果要加,''与""表示字符串内容 会被 转义/不转义
例如:
spring:
profiles: dev
datasource:
url: jdbc:mysql://127.0.01/banchengbang_springboot
username: root
password: root
driver-class-name: com.mysql.jdbc.Driver
类准备:
注意:使用需要添加依赖
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency>User类:
@Data @AllArgsConstructor @Component @ConfigurationProperties(prefix = "user") public class User { private String username; private Integer age; private Book book; private Date birth; private String[] hobby; private List<String> booksName; private Map<String, Object> books; private Set<Double> salary; public User() { System.out.println("创建user bean"); } }
测试类:
@SpringBootApplication public class SpringbootApplication { public static void main(String[] args) { //1、返回IOC容器 ConfigurableApplicationContext run = SpringApplication.run(SpringbootApplication.class, args); User user =run.getBean("user",User.class); System.out.println(user.getUsername()); System.out.println(user); } }
YAML 常用写法
YAML 支持以下三种数据结构:
- 对象:键值对的集合
- 数组:一组按次序排列的值
- 字面量:单个的、不可拆分的值
- 字符串无需加引号,如果要加,''与""表示字符串内容 会被 转义/不转义
YAML文件中的value值类型不同,写法不同。
YAML 字面量写法
字面量是指单个的,不可拆分的值,例如:数字、字符串、布尔值、以及日期:date、boolean、string、number、null等。
在 properties中,使用“key[=]value**”**的形式表示一对键值对(空格不能省略),如 user.username= "xiatian",user.age= 32。
user.username=xiatian is good
user.age=32
user.birth=2020/09/10 13:14:15
单引号与双引号区别:
双引号:不会对字符串里面的特殊字符进行转义;特殊字符会作为本身想表示的意思
user.username="xiatian \n is good"
输出结果为:
- xiatian
- is good
单引号:对字符串里面的特殊字符进行转义,特殊字符最终只是一个普通的字符串数据
user.username= 'xiatian \nis good'
输出结果为:xiatian \n is good
测试结果分别如下:
YAML 对象、数组、List、Map、Set的行内写法与缩进写法
在 YAML 中,对象可能包含多个属性,每一个属性都是一对键值对。
YAML 为对象提供了 2 种写法:缩进式写法、行内式写法,但注意,无论是缩进写法还是行内写法,冒号后都必须有一个空格。
行内写法
**user对象 **行内写法:注意冒号后空格
user: {
username: xiatian is good,
age: 32,
birth: 2020/09/10 13:14:15,**book对象 **行内写法:注意冒号后空格
book: {bookName: springboot , bookPrice:102},
**数组 **行内写法:注意冒号后空格
hobby: [篮球,足球,排球],
**List **行内写法:注意冒号后空格
booksname: [计算机基础,javaEE框架,springboot],
**Map **行内写法:注意冒号后空格
books: {key1: spring, key2: springmvc, key3: springboot,key4: springcloud,
chinese: {0: 活着, 1: 孙子兵法, 2: 诗经, hz: 活着, szbf: 孙子兵法, sj: 诗经}},**Set **行内写法:注意冒号后空格
salary: [6000,7000,8000]
}
缩进写法
**user对象 **缩进写法:注意冒号后空格
user:
username: 'xiatian is good'
age: 32
birth: 2020/09/10 13:14:15
book:
bookName: springboot
bookPrice: 102
hobby:
- 篮球
- 足球
- 排球
booksname:
- 计算机基础
- javaEE框架
- springboot
books:
key1: spring
key2: springmvc
key3: springboot
key4: springcloud
chinese:
0: 活着
1: 孙子兵法
2: 诗经
hz: 活着
szbf: 孙子兵法
sj: 诗经
salary:
- 6000
- 7000
- 8000
行内与缩进写法结合
user:
username: 'xiatian is good'
age: 32
birth: 2020/09/10 13:14:15
book:
bookName: springboot
bookPrice: 102
hobby: [篮球,足球,排球]
booksname: [计算机基础,javaEE框架,springboot]
books:
key1: spring
key2: springmvc
key3: springboot
key4: springcloud
chinese:
0: 活着
1: 孙子兵法
2: 诗经
hz: 活着
szbf: 孙子兵法
sj: 诗经
salary: [6000,7000,8000]
测试结果如下:
User(
username=xiatian is good, age=32, book=Book{bookName='springboot', bookPrice=102.0}, birth=Thu Sep 10 13:14:15 CST 2020, hobby=[篮球, 足球, 排球], booksName=[计算机基础, javaEE框架, springboot], books={ chinese={ key1=spring, key2=springmvc, key3=springboot, key4=springcloud, 0=活着, 1=孙子兵法, 2=诗经, hz=活着, szbf=孙子兵法, sj=诗经} }, salary=[6000.0, 7000.0, 8000.0]
);
YAML 组织结构
一个 YAML 文件可以由一个或多个文档组成,文档之间使用“---**”**作为分隔符,且个文档相互独立,互不干扰。如果 YAML 文件只包含一个文档,则“---**”**分隔符可以省略。
---
代表第一个yml文档中缩进写法
website:
name: bianchengbang
url: www.biancheng.net
---
代表第二个yml文档中缩进写法和行内写法都有
website: {name: bianchengbang,url: www.biancheng.net}
pets:
-dog
-cat
-pig
---
代表第三个yml文档中缩进写法和字面量写法
pets: [dog,cat,pig]
name: "zhangsan \n lisi"
---
代表第四个yml文档中是字面量写法
name: 'zhangsan \n lisi'
07Spring Boot配置绑定
https://blog.csdn.net/qq_41946216/article/details/124771388?spm=1001.2014.3001.5501
版权归原作者 爱吃面的猫 所有, 如有侵权,请联系我们删除。