yaml/yml用法 获取参数用法
基本语法:
key: value;kv之间有空格
大小写敏感
使用缩进表示层级关系
缩进不允许使用tab,只允许空格
缩进的空格数不重要,只要相同层级的元素左对齐即可
'#‘表示注释
字符串无需加引号,如果要加,’ '(单引号)与" "(双引号)表示字符串内容 会被 转义/不转义
普通引用
key : value
对象:键值对的集合map、hash、set、object
行内写法: k: {k1:v1,k2:v2,k3:v3}
k:
k1: v1
k2: v2
k3: v3
数组:一组按次序排列的值。array、list、queue
行内写法: k: [v1,v2,v3]
k:
- v1
- v2
- v3
参数引用
personZS:
name: ahangsan
age: 20
animal:
person: ${personZS}
获取方式
1@Value
在被注入的参数上写@Value("${key值}")
@Value("${name}")
private String name1;
数组形式
@Value("${arraylist[0]}")
private String arraylist;
2environment
注入一个environment的类(springboot自带的)
然后用方法获取
System.out.println(env.getProperty("name"));
System.out.println(env.getProperty("arraylist[0]"));
3@ConfigurationProperties 类从yml中直接获取
package com.xzh.boot12.bean; import lombok.Data; import lombok.ToString; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; import java.util.Date; import java.util.List; import java.util.Map; import java.util.Set; /** * @Author XuZhuHong * @CreateTime 2021/6/7 18:40 */ //下面的代码由Lombok提供 //@Data 自动生成get,set方法 @Data //@ToString 自动生成tostring注解 @ToString //@AllArgsConstructor 自动生成构造方法(全部参) @AllArgsConstructor //@NoArgsConstructor 自动生成无参构造方法 @NoArgsConstructor //@EqualsAndHashCode 重写HashCode方法 @EqualsAndHashCode //@ConfigurationProperties绑定配置文件key为person的数据 //用这个注解过后里面的数据有变量名和配置key相等时会自动注入 @ConfigurationProperties(prefix = "person") @Component//放到容器中的注解 public class Person { private String userName; private Boolean boss; private Date birth; private Integer age; private Pet pet; private String[] interests; private List<String> animal; private Map<String, Object> score; private Set<Double> salarys; private Map<String, List<Pet>> allPets; } /** 注意想要使用上面关于lombok的注解必须要在pom.xml中导入以下代码: <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> */
# yaml表示以上对象
person:
userName: zhangsan
boss: false
birth: 2019/12/12 20:12:33
age: 18
pet:
name: tomcat
weight: 23.4
interests: [ 篮球,游泳 ]
animal:
- jerry
- mario
score:
english:
first: 30
second: 40
third: 50
math: [ 131,140,148 ]
chinese: { first: 128,second: 136 }
salarys: [ 3999,4999.98,5999.99 ]
allPets:
sick:
- { name: tom }
- { name: jerry,weight: 47 }
health: [ { name: mario,weight: 47 } ]
yaml提示器
<!--yaml编写提示--> <!--配置处理器 就是解决在配置文件中没有提示的问题--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <!--这句话的意思是 让这个打包插件 不要把yaml的代码提示放进去--> <configuration> <excludes> <exclude> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> </exclude> </excludes> </configuration> </plugin> </plugins> </build>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)