• 基础篇——配置文件解析


    复制模块

    • 删除之前工程的文件,只留下pom.xml 和 src 文件
    • 修改pom文件中的artifactId与新工程一致
    • 如果不修改name标签的话,尽量把name标签和description标签都删除
    • 保留备份即可

    属性配置(application.properties)

    • 每一个配置对应的是技术,如果不引用某种技术,配置文件中就不会有代码提示
    • 官方配置文档
    # 服务器端口配置
    server.port=80
    
    # 修改banner
    #spring.main.banner-mode=console
    # 修改banner图
    #spring.banner.image.location=ysg.jpg
    
    # 日志
    logging.level.root=info
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    配置文件三种类型

    • 三种共存时properties > yml > yaml
    • 相同的属性会采用优先级,不同配置则都会保留配置
      properties
      yml
      yaml

    添加配置文件

    • 配置文件自动代码提示

    在这里插入图片描述

    yml配置文件

    • 优点
      容易阅读
      容易与脚本交互
      以数据核心,重数据轻格式
    • 语法规则
      大小写敏感
      属性层级关系使用多行描述,每行结尾使用冒号结束
      使用缩进表示层级关系,同层级左侧对齐,只允许使用空格
      属性值前面添加空格(属性名和属性值之间使用 冒号+空格作为分隔)
      #表示注释
    • yml文件中的各种数据格式
    # 服务器端口配置
    server:
      port: 81
    
    country: china
    
    party: true
    
    birthday: 1949-10-01
    
    null: ~
    
    # 一个对象
    user:
      name: ssc
      age: 23
    
    # 多层级对象
    a:
      b:
        c:
          d: 5
    
    # 数组
    likes:
      - game
      - music
      - sleep
      -
    likes1: [game,music,sleep]
    
    # 对象数组
    users:
      -
        name: zhangsan
        age: 18
      -
        name: wangwu
        age: 23
    
    users1:
      - name: zhangsan
        age: 18
      - name: wangwu
        age: 23
    
    users2: [{name:zhangsan,age:18},{name:lisi,age:17}]
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48

    读取yml文件的数据

    • 注解@Value配合SpEL读取单个数据,多个数据按层级读取
        // 读yml中数据的单一数据
        @Value("${country}")
        private String country1;
        // 对象
        @Value("${user.name}")
        private String name1;
        // 数组
        @Value("${likes[1]}")
        private String likes1;
        // 数组对象
        @Value("${users[0].age}")
        private String age1;
        // 端口号
        @Value("${server.port}")
        private String port;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    变量引用 & 转义字符

    # 变量引用
    baseDir: c:\windows
    
    tempDir: ${baseDir}\temp
    
    # 转义字符
    tempDir1: "${baseDir}\temp \t1 \t2 \t3 \t4"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    // 变量引用
    @Value("${tempDir}")
    private String tempDir;
    // 转义字符
    @Value("${tempDir1}")
    private String tempDir1;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    读取全部yml属性

    • 使用Environment 对象封装全部信息
    • 使用@Autowired自动装配数据到Environment 对象中
    • env.getProperty(“server.port”)读取不同的属性
    // 读取全部yml属性,自动装配
        @Autowired
        private Environment env;
    
    • 1
    • 2
    • 3
     System.out.println(env.getProperty("server.port"));
     System.out.println(env);
    
    • 1
    • 2

    读取yml引用数据类型(常用

    • yml定义一个对象数据类型
    # 需要被读取引用数据类型
    datasource:
      driver: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://localhost:3306/mybatis
      username: root
      password: 123456
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 指定对应的类
    // spring管理的Bean
    @Component
    // 指定加载的yml的某一个属性
    @ConfigurationProperties(prefix = "datasource")
    @Data
    public class MyDataSource {
        private String driver;
        private String url;
        private String username;
        private String password;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 输出
    System.out.println(myDataSource);
    
    • 1
  • 相关阅读:
    送分题,ArrayList 的扩容机制了解吗?
    c++ 学习之 静态成员变量和静态成员函数
    代码随想录算法训练营第十三天 | 栈与队列
    GPT引领前沿热点、AI绘图
    Redis 内存优化神技,小内存保存大数据
    Android学习笔记 62. 为TextView设置样式
    apollo配置中心的client端分析
    Codeforces Round 895 (Div. 3)
    AMD64(x86_64)架构abi文档:上
    海淀区委网信办领导到中睿天下调研
  • 原文地址:https://blog.csdn.net/qq_44808710/article/details/125613073