栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringBoot-Yaml语法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringBoot-Yaml语法

文章目录
  • SpringBoot-Yaml语法
      • 四、Yaml语法
        • 1、配置文件
        • 2、Yaml概述
        • 3、Yaml基础语法
        • 4、注入配置文件
          • yaml注入配置文件
          • 加载指定的配置文件
          • 配置占位符
          • 结论:

SpringBoot-Yaml语法 四、Yaml语法 1、配置文件

SpringBoot使用一个全局的配置文件,配置文件名称是固定的

  • application.properties
    • 语法结构:key=value
  • applicatio.yml
    • 语法结构:key:空格 value

**配置文件的作用:**修改SpringBoot自动配置的默认值,因为SpringBoot在底层都给我们配置好了;

例如:配置端口号

server.port=8080
2、Yaml概述

YAML是 “YAML Ain’t a Markup Language” (YAML不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:“Yet Another Markup Language”(仍是一种标记语言)

这种语言以数据为中心,而不是以标记语言为中心!!

比较传统xml配置和yaml配置的区别:端口配置


	8080

#yaml配置
server:
	port: 8080
3、Yaml基础语法

语法要求严格:

  • 控制不能省略
  • 以缩进来控制层级关系,只要左对齐的一列就视为同一级
  • 属性和值的大小写都是十分敏感
#键值对
name: lengzher

#对象
person:
  name: lengzher
  age: 1
  happy: false
  birthday: 2020/2/1
  map: {heigh: 98,long: 18}
  list: [sing,read,run]
  pet:
    name: 旺财
    age: 2

#行内写法
student1: {name: lengzher,sex: 1}

#数组
pets1:
  -cat
  -dog
  -pig
#行内写法
pets: [cat,dog,pig]
4、注入配置文件

Yaml更强大的地方在于可以给实体类直接注入匹配值!!

yaml注入配置文件
  1. 编写实体类
public class Person {
    private String name;
    private Integer age;
    private Boolean happy;
    private Date birthday;
    private Map map;
    private List list;
    private Pets pet;
}
 

2.配置application.yml

person:
  name: lengzher
  age: 1
  happy: false
  birthday: 2020/2/1
  map: {heigh: 98,long: 18}
  list: [sing,read,run]
  pet:
    name: 旺财
    age: 2

3.将person对象注入到实体类中

@Component //注册bean
@ConfigurationProperties(prefix = "person")
public class Person {
    private String name;
    private Integer age;
    private Boolean happy;
    private Date birthday;
    private Map map;
    private List list;
    private Pets pet;
}
 

4.导入配置文件处理器依赖


  org.springframework.boot
  spring-boot-configuration-processor
  true

5.测试

@SpringBootTest
class HelloApplicationTests {
    @Autowired
    private Person person;
    @Test
    void contextLoads() {
        System.out.println(person);
    }
}

打印出实体类person的值,测试成功!

加载指定的配置文件

**@PropertySource :**加载指定的配置文件;

@configurationProperties:默认从全局配置文件中获取值;

1.我们去在resources目录下新建一个person.properties文件

name=lengzher

2.然后在我们的代码中指定加载person.properties文件

@PropertySource(value = "classpath:person.properties")
@Component //注册bean
public class Person {

    @Value("${name}")
    private String name;

    ......  
}

3.测试

配置占位符
person:
    name: user${random.uuid} # 随机uuid
    age: ${random.int}  # 随机int
    happy: false
    birth: 2000/01/01
    maps: {k1: v1,k2: v2}
    lists:
      - code
      - girl
      - music
    dog:
    	#如果person.name存在就走,不存在走other
      name: ${person.name:other}_旺财
      age: 1
结论:
  • 配置yml和配置properties都可以获取到值 , 强烈推荐 yml;
  • 如果我们在某个业务中,只需要获取配置文件中的某个值,可以使用一下 @value;
  • 如果说,我们专门编写了一个JavaBean来和配置文件进行一一映射,就直接@configurationProperties,不要犹豫!
转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号