最开始我们使用的是 xml
,格式如下:
<enterprise> <name>itcast</name> <age>16</age> <tel>4006184000</tel></enterprise>
而 properties
类型的配置文件如下
enterprise.name=itcastenterprise.age=16enterprise.tel=4006184000
yaml
类型的配置文件内容如下
enterprise:name: itcastage: 16tel: 4006184000
优点:
- 容易阅读
yaml
类型的配置文件比xml
类型的配置文件更容易阅读 , 结构更加清晰
- 容易与脚本语言交互
- 以数据为核心,重数据轻格式
yaml
更注重数据,而xml
更注重格式
.yml
(主流)
.yaml
yml
的 。2.1 语法规则
- 大小写敏感
- 属性层级关系使用多行描述,每行结尾使用冒号结束
- 使用缩进表示层级关系,同层级左侧对齐 , 只允许使用空格(不允许使用Tab键)
空格的个数并不重要 , 只要保证同层级的左侧对齐即可 。
- 属性值前面添加空格(属性名与属性值之间使用冒号+空格作为分隔)
- # 表示注释
数组数据在数据书写位置的下方使用减号作为数据开始符号,每行书写一个数据 , 减号与数据间空格分隔 , 例如
enterprise:name: itcastage: 16tel: 4006184000subject: - Java - 前端 - 大数据
三、3种yaml配置文件数据读取3.1 环境准备新创建一个名为 springboot_03_read_data
的 SpringBoot
工程 , 参考Java开发学习(三十五)----SpringBoot快速入门及起步依赖解析,目录结构如下文章插图
在
com.itheima.controller
包写创建名为 BookController
的控制器,内容如下@RestController@RequestMapping("/books")public class BookController {? @GetMapping("/{id}") public String getById(@PathVariable Integer id){ System.out.println("id ==> "+id); return "hello , spring boot!"; }}
在 com.itheima.domain
包下创建一个名为 Enterprise
的实体类等会用来封装数据,内容如下public class Enterprise { private String name; private int age; private String tel; private String[] subject; //setter and getter //toString}
在 resources
下创建一个名为 application.yml
的配置文件,里面配置了不同的数据,内容如下lesson: SpringBoot?server:port: 80?enterprise:name: itcastage: 16tel: 4006184000subject: - Java - 前端 - 大数据
3.2 读取配置数据3.2.1 使用 @Value注解使用 @Value("表达式")
注解可以从配合文件中读取数据 , 注解中用于读取属性名引用方式是:${一级属性名.二级属性名……}
我们可以在
BookController
中使用 @Value
注解读取配合文件数据 , 如下@RestController@RequestMapping("/books")public class BookController { @Value("${lesson}") private String lesson; @Value("${server.port}") private Integer port; @Value("${enterprise.subject[0]}") private String subject_00;? @GetMapping("/{id}") public String getById(@PathVariable Integer id){ System.out.println(lesson); System.out.println(port); System.out.println(subject_00); return "hello , spring boot!"; }}
使用postman调接口文章插图
可以看到结果已经返回
文章插图
3.2.2 Environment对象上面方式读取到的数据特别零散,
SpringBoot
还可以使用 @Autowired
注解注入 Environment
对象的方式读取数据 。这种方式 SpringBoot
会将配置文件中所有的数据封装到 Environment
对象中,如果需要使用哪个数据只需要通过调用
推荐阅读
- 《Thinking In Java》作者:不要使用并发!
- aardio + Python 可视化快速开发桌面程序,一键生成独立 EXE
- Windows esp-idf 安装
- 建议收藏 Java线程同步的四种方式详解
- aardio + PHP 可视化快速开发独立 EXE 桌面程序
- 制造企业有可能自行开发ERP系统吗?
- aardio + VBScript 混合开发
- 14 基于SqlSugar的开发框架循序渐进介绍-- 基于Vue3+TypeScript的全局对象的注入和使用
- 基于Qt Designer和PyQt5的桌面软件开发--环境搭建和入门例子
- Java导出带格式的Excel数据到Word表格