栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

YAML语法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

YAML语法

YAML
  • 概述: 一种流行且方便的配置文件格式

  • 语法规范:

    • 支持多组织结构
      • 用 — 标识一个组织结构的开始, 用 … 标识组织结构的结束(可选)
      • 当个组织结构可以不用 —
    • 支持注释
      • 注释符号 #
    • 大小写敏感
    • 使用空格缩进(不能使用tab)
    • 空格缩进只要是左对齐, 就是同一层级
    • 字符串可以不用引号(如果内容有空格需要引号)
  • 3中结构组成

    • 标量

      • 相当于数据类型

      • 数据类型的约定(值)

        • integer: 12345     # 整数标准形式
           octal: 0o34        # 八进制表示,第二个是字母 o
           hex: 0xFF          # 十六进制表示
           
           float: 1.23e+3     # 浮点数
           fixed: 13.67       # 固定小数
           minmin: -.inf      # 表示负无穷
           notNumber: .NaN    # 无效数字
           
           null:              # 空值
           boolean: [true, false] # 布尔值
           string: '12345'    # 字符串
           
           date: 2015-08-23   # 日期
           datetime: 2015-08-23T02:02:00.1z  # 日期时间
           iso8601: 2015-08-23t21:59:43.10-05:00  # iso8601 日期格式
           spaced: 2015-08-23 21:59:43.10 -5      # ?
          
      • “!”(叹号)显式指示类型,或自定义类型标识

        • 单叹号通常是自定义类型,双叹号是内置类型

        •  isString: !!str 2015-08-23     # 强调是字符串不是日期数据
           picture: !!binary |            # Base64  图片
               R0lGODlhDAAMAIQAAP//9/X
               17unp5WZmZgAAAOfn515eXv
               Pz7Y6OjuDg4J+fn5OTk6enp
               56enmleECcgggoBADs=
           #下面是内置类型
           !!int               # 整数类型
           !!float             # 浮点类型
           !!bool              # 布尔类型
           !!str               # 字符串类型
           !!binary            # 也是字符串类型
           !!timestamp         # 日期时间类型
           !!null              # 空值
           !!set               # 集合
           !!omap, !!pairs     # 键值列表或对象列表
           !!seq               # 序列,也是列表
           !!map               # 键值表
           
           #下面是一些例子:
           --- !!omap
           - Mark: 65
           - Sammy: 63
           - Key: 58
           
           --- !!set           # 注意,“?”表示键为列表,在这里列表为 null
           ? Mark
           ? Sammy
           ? Key
           
           # 下面是自定义的类型或标识
           %TAG ! tag:clarkevans.com,2002:   # % 是指令符号
           --- !shape
           # Use the ! handle for presenting
           # tag:clarkevans.com,2002:circle
           - !circle
             center: &ORIGIN {x: 73, y: 129}
             radius: 7
           - !line
             start: *ORIGIN
             finish: { x: 89, y: 102 }
           - !label
             start: *ORIGIN
             color: 0xFFEEBB
             text: Pretty vector drawing.
          
    • 序列

      • 相当于数组或集合列表
      • 2种表示
        1. - 加上一个空格 表示单个列表项
          • - blue
          • - red
          • - green
        2. [] 表示所有项
          • [blue, red, green]
    • 键值对

      • 相当于Map

      • 使用 : 加上空格表示单个键值对

        • name: xyb
      • 使用{}表示一个键值表

        • items: {no: 1234, descript: cpu, price: ¥800.00}
      • "? " 问号+空格表示复杂的键

        • 当键是一个列表或键值表时,就需要使用本符号来标记

        • # 使用一个列表作为键
           ? [blue, reg, green]: Color
           # 等价于
           ? - blue
             - reg
             - gree
           : Color
          
    • 其他

      • 锚点与引用,定义数据的复用

        • 第一步:使用 “&” 定义数据锚点(即要复制的数据)

        • 第二步:使用 “*” 引用上述锚点数据(即数据的复制目的地)

        •  ---
           hr:
             - Mark McGwire
             # Following node labeled SS
             - &SS Sammy Sosa            # 定义要复制的数据
           rbi:
             - *SS # Subsequent occurrence   这里是数据复制目标
             - Ken Griffey
          详尽语法见官网:http://www.yaml.org/spec/1.2/spec.html
          
配置文件
  • application.yml

    • 语法格式:

      • 支持内部用${} ognl
      • 缩进 加 : (类似于python格式)
    • 常用元素:(约定大于配置大于代码原则)

      • profiles 支持不同版本不同配置, 如测试, 准生产, 灰度, 生产

      •   spring:
              application:
                name: cms-discovery-eureka-ha
            # yml配置文件之连接符(---)的使用
            ---
            spring:
              profiles: peer1                                 
            server:
              port: 9092
            eureka:
              instance:
                hostname: peer1                              
              client:
                serviceUrl:
                  defaultZone: http://peer2:9093/eureka/      
            
            ---
            spring:
              profiles: peer2
            server:
              port: 9093
            eureka:
              instance:
                hostname: peer2
              client:
                serviceUrl:
                  defaultZone: http://peer1:9092/eureka/
            #使用方式:假如生成的包名为 cms-eureka-ha.jar
            
            #java -jar  cms-eureka-ha.jar  --spring.profiles.active=peer1
            
            #java -jar  cms-eureka-ha.jar  --spring.profiles.active=peer2
            
            #通过spring.profiles.active指定使用哪个profile启动。
        
        ```yml
        server:
          port: 8001
          profiles: test ## 指定配置文件的环境
        
        spring:
          application:
            name: cloud-payment-service
          datasource:
            type: com.alibaba.druid.pool.DruidDataSource            # 当前数据源操作类型
            driver-class-name: org.gjt.mm.mysql.Driver              # mysql驱动包
            url: jdbc:mysql://localhost:3306/db2019?useUnicode=true&characterEncoding=utf-8&useSSL=false
            username: root
            password: 123456
        ```
      
  • 配置文件加载顺序

    • 这是为什么可以让配置文件外部化的原因
    • 1.在命令行中传入的参数 > 外部配置文件 > 内部配置文件(自行百度)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1028357.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号