三十六 Java开发学习----SpringBoot三种配置文件解析( 二 )


最开始我们使用的是 xml ,格式如下:
<enterprise>    <name>itcast</name>    <age>16</age>    <tel>4006184000</tel></enterprise>properties 类型的配置文件如下
enterprise.name=itcastenterprise.age=16enterprise.tel=4006184000yaml 类型的配置文件内容如下
enterprise:name: itcastage: 16tel: 4006184000优点:

  • 容易阅读
    yaml 类型的配置文件比 xml 类型的配置文件更容易阅读 , 结构更加清晰
  • 容易与脚本语言交互
  • 以数据为核心,重数据轻格式
    yaml 更注重数据,而 xml 更注重格式
YAML 文件扩展名:
  • .yml (主流)
  • .yaml
上面两种后缀名都可以,以后使用更多的还是 yml 的 。
2.1 语法规则
  • 大小写敏感
  • 属性层级关系使用多行描述,每行结尾使用冒号结束
  • 使用缩进表示层级关系,同层级左侧对齐 , 只允许使用空格(不允许使用Tab键)
    空格的个数并不重要 , 只要保证同层级的左侧对齐即可 。
  • 属性值前面添加空格(属性名与属性值之间使用冒号+空格作为分隔)
  • # 表示注释
核心规则:数据前面要加空格与冒号隔开
数组数据在数据书写位置的下方使用减号作为数据开始符号,每行书写一个数据 , 减号与数据间空格分隔 , 例如
enterprise:name: itcastage: 16tel: 4006184000subject:  - Java  - 前端  - 大数据三、3种yaml配置文件数据读取3.1 环境准备新创建一个名为 springboot_03_read_dataSpringBoot 工程 , 参考Java开发学习(三十五)----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调接口
三十六 Java开发学习----SpringBoot三种配置文件解析

文章插图
可以看到结果已经返回
三十六 Java开发学习----SpringBoot三种配置文件解析

文章插图
3.2.2 Environment对象上面方式读取到的数据特别零散,SpringBoot 还可以使用 @Autowired 注解注入 Environment 对象的方式读取数据 。这种方式 SpringBoot 会将配置文件中所有的数据封装到 Environment 对象中,如果需要使用哪个数据只需要通过调用

推荐阅读