Spring boot YML配置

1.YML配置

1.1.简介

1.1.1YML是什么

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.1.2YML优点
  1. YAML易于人们阅读。

  2. 更加简洁明了

1.2.语法

1.2.1约定
  • k: v 表示键值对关系,冒号后面必须有一个空格

  • 使用空格的缩进表示层级关系,空格数目不重要,只要是左对齐的一列数据,都是同一个层级的

  • 大小写敏感

  • 缩进时不允许使用Tab键,只允许使用空格

  • java中对于驼峰命名法,可用原名或使用-代替驼峰,如java中的lastName属性,在yml中使用lastName或 last-name都可正确映射。

  • yml中注释前面要加#

1.2.2键值关系
普通值(字面量)

k: v:字面量直接写;

字符串默认不用加上单引号或者双绰号;

“”: 双引号;转意字符能够起作用

​ name: “sangeng \n caotang”:输出;sangeng 换行 caotang

‘’:单引号;会转义特殊字符,特殊字符最终只是一个普通的字符串数据

name1: sangeng 
name2: 'sangeng  \n caotang'
name3: "sangeng  \n caotang"
age: 15
flag: true
日期
date: 2019/01/01
对象(属性和值)、Map(键值对)

多行写法:

在下一行来写对象的属性和值的关系,注意缩进

student:
  name: zhangsan
  age: 20

行内写法:

student: {name: zhangsan,age: 20}
数组、list、set

用- 值表示数组中的一个元素

多行写法:

pets:
  - dog
  - pig
  - cat

行内写法:

pets: [dog,pig,cat]
对象数组、对象list、对象set
students:
 - name: zhangsan
   age: 22
 - name: lisi
   age: 20
 - {name: wangwu,age: 18}
1.2.3 占位符赋值

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

例如

server:
  port: ${myPort:88}

myPort: 80   

1.3.SpringBoot读取YML

1.3.1 @Value注解

​ 注意使用此注解只能获取简单类型的值(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容器管理的

1.3.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要和成员变量名一致才可以对应的上。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值