springboot yml配置文件详解

亦凉 2023-02-08 12:43 87阅读 0赞

1. yml简介

  1. # YAML是"YAML Ain't a Markup Language"(YAML不是一种标记语言)的递归缩写。
  2. ## 在开发的这种语言时,YAML 的意思其实是:"Yet Another Markup Language"(仍是一种标记语言),
  3. ## 但为了强调这种语言以数据做为中心,而不是以标记语言为重点,而用反向缩略语重命名。
  4. # yml语法
  5. # 0. YAML 使用可打印的Unicode字符,可以使用utf-8 utf-16
  6. # 1. 使用 “k: v” 格式表示键值对关系,冒号后面必须有一个空格
  7. # 2. 使用空格(“ ”)缩进表示层级关系,不能使用跳格字符(TAB); 空格数目不重要,只要左对齐的数据,表示都在同一层
  8. # 3. 使用单引号(‘’)双引号(“”) 字符串类型的值 平常不需要使用引号, 有特殊字符需要处理的时候需要加双引号或者单引号
  9. # 4. 使用井号 (#) 表示单行注释
  10. # 5. 使用双感叹号 (!!) 强制指定格式(数据类型)
  11. # 6. 使用三横杆 (---) 分割文档块,表示多个文件
  12. # 7. 使用三点号 (...) 表示文档结尾
  13. # 8. 使用一组横杠(-)或者中括号[]加逗号分割的元素 表示清单列表(数组,list,set)
  14. # 9. 使用大括号({})表示散列表(map 子对象),散列表的键值可以使用问号(?)开头,表示多个词汇组成的键值
  15. # 10. 文档中重复的部分使用锚点符号(&)和引用符号(*),表示将&标注的内容复制引用到*标注的地方
  16. # 11. 区块字符串用缩进和修饰符(非必要)来和其他数据分隔。有新行保留(preserve)使用符号(|);新行折叠(flod)使用符号(>)

2. 使用示例

2.1 application.yml

  1. # 示例如下:
  2. system:
  3. # 对应数据类型 String(字符串的值直接书写)
  4. name: \tPC_123345
  5. # 对应数据类型 String(字符串的值加 单引号)
  6. name1: '\tPC_123345'
  7. # 对应数据类型 String(字符串的值 加双引号 可以使用(\)开始的转义字符)
  8. name2: "\tPC_123345"
  9. # 区块字符串 不加修饰符
  10. name3:
  11. 11
  12. 22
  13. 33
  14. # 区块字符串 加|
  15. name4: |
  16. one
  17. two
  18. three
  19. # 区块字符串 加 >
  20. name5: >
  21. # !!str 表示严格的字符串
  22. address: !!str 127.0.0.1
  23. # 对应数据类型 Integer
  24. cpu: 16
  25. # 对应数据类型 Boolean
  26. enabled: true
  27. # 对应数据类型 Date
  28. createTime: 2020/11/21
  29. # 宽松绑定原则(root-path与 rootPath都可以绑定到 rootPath属性上)
  30. root-path: C:\Program Files
  31. # 对应数据类型 Map 子对象(行内写法)
  32. display: {
  33. name: 显示屏幕一, scalingLayout: 100%, resolution: 1920*1080 }
  34. # 对应数据类型 数组(行内写法)
  35. devices: [ 键盘, 鼠标, 显示器 ]
  36. # 对应数据类型 list set 数组
  37. users:
  38. - username: user1
  39. password: 111111
  40. - username: user2
  41. password: 222222
  42. - {
  43. username: user3, password: 333333 } #(行内写法)
  44. permissions:
  45. - select
  46. - delete
  47. - insert
  48. userGroups:
  49. - group1
  50. - group2
  51. # 系统环境的值
  52. spring:
  53. profiles:
  54. active: ${
  55. spring.profiles.active}
  56. # 文档块
  57. ---
  58. spring:
  59. config:
  60. activate:
  61. on-profile: dev
  62. system:
  63. desc: 这是开发环境
  64. ---
  65. spring:
  66. config:
  67. activate:
  68. on-profile: fat
  69. system:
  70. desc: 这是测试环境
  71. ---
  72. spring:
  73. config:
  74. activate:
  75. on-profile: prod
  76. system:
  77. desc: 这是生产环境
  78. # ... 表示文档结尾
  79. ...

2.2 Java对象

  1. import lombok.Data;
  2. import org.springframework.beans.factory.annotation.Value;
  3. import org.springframework.boot.context.properties.ConfigurationProperties;
  4. import org.springframework.stereotype.Component;
  5. import java.util.Date;
  6. import java.util.List;
  7. import java.util.Set;
  8. @Data
  9. @Component
  10. @ConfigurationProperties(prefix = "system")
  11. public class SystemConfig {
  12. private String name;
  13. private String name1;
  14. private String name2;
  15. private String name3;
  16. private String name4;
  17. private String name5;
  18. private String address;
  19. private Integer cpu;
  20. private Boolean enabled;
  21. private Date createTime;
  22. private String rootPath;
  23. private Display display;
  24. private String[] devices;
  25. private List<User> users;
  26. private Set<String> permissions;
  27. private String[] userGroups;
  28. private String desc;
  29. @Value("${spring.profiles.active}")
  30. private String active;
  31. @Data
  32. static class User {
  33. private String username;
  34. private String password;
  35. }
  36. @Data
  37. static class Display {
  38. private String name;
  39. private String scalingLayout;
  40. private String resolution;
  41. }
  42. }

2.3 测试接口

  1. /**
  2. * 测试 yml配置
  3. */
  4. @RestController
  5. public class TestConfigController {
  6. @Autowired
  7. private SystemConfig systemConfig;
  8. /**
  9. * 测试 @ConfigurationProperties
  10. *
  11. * @return 配置文件的json格式
  12. */
  13. @RequestMapping("/testConfig")
  14. public Object testConfig() {
  15. System.out.println(systemConfig.toString());
  16. return systemConfig;
  17. }
  18. }

2.4 配置启动变量

image.png

2.5测试结果

  1. {
  2. "name": "\\tPC_123345",
  3. "name1": "\\tPC_123345",
  4. "name2": "\tPC_123345",
  5. "name3": "11 22 33",
  6. "name4": "one\ntwo\nthree\n",
  7. "name5": "一 二 三\n",
  8. "address": "127.0.0.1",
  9. "cpu": 16,
  10. "enabled": true,
  11. "createTime": "2020-11-20T16:00:00.000+00:00",
  12. "rootPath": "C:\\Program Files",
  13. "display": {
  14. "name": "显示屏幕一",
  15. "scalingLayout": "100%",
  16. "resolution": "1920*1080"
  17. },
  18. "devices": [
  19. "键盘",
  20. "鼠标",
  21. "显示器"
  22. ],
  23. "users": [
  24. {
  25. "username": "user1",
  26. "password": "111111"
  27. },
  28. {
  29. "username": "user2",
  30. "password": "222222"
  31. },
  32. {
  33. "username": "user3",
  34. "password": "333333"
  35. }
  36. ],
  37. "permissions": [
  38. "select",
  39. "delete",
  40. "insert"
  41. ],
  42. "userGroups": [
  43. "group1",
  44. "group2"
  45. ],
  46. "desc": "这是开发环境",
  47. "active": "dev"
  48. }

发表评论

表情:
评论列表 (有 0 条评论,87人围观)

还没有评论,来说两句吧...

相关阅读