SpringBoot配置文件--yaml用法及注意事项

本文详细介绍了SpringBoot中配置文件的yaml用法,包括基本语法、数据类型(字面量、对象、数组)的使用,以及如何通过配置文件给Person类实例赋值。同时提到IDEA中yaml的使用技巧和常见问题解决方法。
摘要由CSDN通过智能技术生成

SpringBoot配置文件–yaml用法

一.基本语法

  • key: value (ps:key和value之间是必须要有空格的)
  • 大小写敏感
  • 使用缩进表示层级关系
  • 缩进不允许使用tab,只允许空格 (ps:用idea开发时,用tab好像也没有太大影响)
  • 缩进空格数不重要,只要相同层级元素左对齐即可
  • #表示注释
  • ‘’与“” ,单引号和双引号表示字符串内容分别表示 转义 和不转义

二.数据类型

  • 字面量: 单个的、不可再分的值。如date,boolean,String,number,null
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

三.示例
以下有一个Person类对象,使用配置文件的方式,给对象赋值。

@ConfigurationProperties(prefix = "person") //让组件同配置文件中的key值为person相绑定
@Component //在容器中创建一个组件
@Data
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;
}

@Data
public class Pet {
    private String name;
    private Integer age;
}

现在通过yaml文件来配置Person对象的值,yaml配置文件后缀可以用.yaml或者是.yml。

person:
 username: 李四
 boss: false
 birth: 1997/12/9
 age: 25
# 行内写法:
# interest: [羽毛球,游泳]
 interest:
  - 羽毛球
  - 游泳
 animal: [猫猫,狗狗]
 score:
  english: 80
  math: 100
# 行内写法:
# score: {english:80,中文:100}
 salary:
  - 9999
  - 8888
 pet:
  name: 崽崽
  age: 3
 allPets:
  stick:
   - {name:狗二}
   - {name:狗三,age:1}
  health: [{name:兔二,age:5}]

编写测试的Control类,该类是返回配置类实例对象person的值。

@RestController
public class HelloController {
    @Autowired
    private Person person;
    @RequestMapping("/person")
    public Person returnPerson(){
        return person;
    }
}

在网页中输入http://localhost:8080/person,可看到输出内容。
在这里插入图片描述
在测试过程中,可能会报如下ava.nio.charset.MalformedInputException: Input length = 1错误。可能是因为yaml配置文件中语法有问题,或者是中文编码存在问题。解决方法可点击该链接查看

四.Idea使用yaml便利技巧
使用idea编写yaml时,不做任何配置的情况下,yaml文件中只有springboot原生配置才会有提示。自己编写的东西写入yaml时是不会有提示的,且在对应类中会有如下提示:
在这里插入图片描述
我们可以在pom.xml文件中导入以下依赖,添加后要记得重新编译

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

编译成功后,在yaml中编写代码时就会有提示了
在这里插入图片描述
该依赖只是优化编写,对实际运行于业务功能无关。所以将项目打包成jar包时,可以添加如下配置,即不打包该依赖类。
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值