YML配置

1、YML配置

1.1 YML是什么

YAML (YAML Ain’t a Markup Language)YAML不是一种标记语言,通常以.yml为后缀的文件,是一种直观的能够被电脑识别的数据序列化格式,并且容易被人类阅读,容易和脚本语言交互的,可以被支持YAML库的不同的编程语言程序导入,一种专门用来写配置文件的语言。

​ YAML试图用一种比XML更敏捷的方式,来完成XML所完成的任务。

​ 例如:

student:
    name: sangeng
    age: 15
<student>
    <name>sangeng</name>
    <age>15</age>
</student>

1.2 YML的优点

  1. YAML易于人们阅读。
  2. 更加简洁明了

1.3 YML语法

  • k: v 表示键值对关系,冒号后面必须有一个空格
  • 使用空格的缩进表示层级关系,空格数目不重要,只要是左对齐的一列数据,都是同一个层级的
  • 大小写敏感
  • 缩进时不允许使用Tab键,只允许使用空格
  • java中对于驼峰命名法,可用原名或使用-代替驼峰,如java中的lastName属性,在yml中使用lastName或 last-name都可正确映射。
  • yml中注释前面要加#

1.4 YML语法示例

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student {
    private String lastName;
    private Integer age;
    private Boolean boss;

    private Date birthday;
    private Map<String,String> maps;
    private Map<String,String> maps2;
    private List<Dog> list;

    private Dog dog;
    private String[] arr;
    private String[] arr2;

    private Map<String,Dog> dogMap;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
class Dog {
    private String name;
    private Integer age;
}
student:
  lastName: sangeng
  age: 15
  boss: true
  birthday: 2006/2/3
  maps:
    name: sangeng	#多行写法
    age: 11
  maps2: {name: caotang,age: 199}	#行内写法
  list:
    - name: 小白
      age: 3
    - name: 小黄
      age: 4
    - {name: 小黑,age: 1}	
  dog:
    name: 小红
    age: 5
  arr:
    - sangeng
    - caotang
  arr2: [sangeng,caotang]	#行内写法
  dogMap:
    xb: {name: 小白,age: 9}	
    xh:
      name: 小红
      age: 6

1.5 占位符赋值

可以使用 ${key:defaultValue} 的方式来赋值,若key不存在,则会使用defaultValue来赋值。

例如

server:
  port: ${myPort:88}

myPort: 80   

1.6 SpringBoot读取YML

3.6.1@Vaule注解

注意使用此注解只能获取简单类型的值(8种基本数据类型及其包装类,String,Date)

student:
  lastName: sangeng
@RestController
public class TestController {
    @Value("${student.lastName}")
    private String lastName;
    @RequestMapping("/test")
    public String test(){
        System.out.println(lastName);
        return "hi";
    }
    
}

注意:加了@Value的类必须是交由Spring容器管理的

3.6.2@ConfigurationProperties注解

yml配置

student:
  lastName: sangeng
  age: 17
student2:
  lastName: sangeng2
  age: 15

在类上添加注解@Component 和@ConfigurationProperties(prefix = “配置前缀”)

@Data
@AllArgsConstructor
@NoArgsConstructor
@Component
@ConfigurationProperties(prefix = "student")
public class Student {
    private String lastName;
    private Integer age;
}

从spring容器中获取Student对象

@RestController
public class TestController {

    @Autowired
    private Student student;
    @RequestMapping("/test")
    public String test(){
        System.out.println(student);
        return "hi";
    }
}

注意事项:要求对应的属性要有set/get方法,并且key要和成员变量名一致才可以对应的上。

1.7 YML和properties配置的相互转换

​ 我们可以使用一些网站非常方便的实现YML和properties格式配置的相互转换。
转换网站:https://www.toyaml.com/index.html

1.8 配置提示

如果使用了@ConfigurationProperties注解,可以增加以下依赖,让我们在书写配置时有相应的提示。

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>

注意:添加完依赖加完注解后要运行一次程序才会有相应的提示。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值