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

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

2、什么是yaml
这种语言以数据作为中心,而不是以标记语言为重点!
传统xml配置:

<server><port>8081<port>
</server>

yaml配置:

server:prot: 8080

3、yaml的语法
1、空格不能省略
2、以缩进来控制层级关系,只要是左边对齐的一列数据都是同一个层级的。
3、属性和值的大小写都是十分敏感的。

# 字面量:普通的值  [ 数字,布尔值,字符串  ]
# 字面量直接写在后面就可以 , 字符串默认不用加上双引号或者单引号;
k: v

注意:
“ ” 双引号,不会转义字符串里面的特殊字符 , 特殊字符会作为本身想表示的意思;
比如 :name: “xianyu \n fanshen” 输出 :xianyu 换行 fanshen
’ ’ 单引号,会转义特殊字符 , 特殊字符最终会变成和普通字符一样输出
比如 :name: ‘xianyu \n fanshen’ 输出 :xianyu \n fanshen
4、对象、Map(键值对)
一般格式:

k: v1:v2:

注意缩进:

student:name: xianyuage: 3

行内写法:

student: {name: xianyu,age: 18}

5、数组( List、set )
-值表示:

pets:- cat- dog- pig

行内写法:

pets: [cat,dog,pig]

修改默认端口:

server:port: 8082

6、yaml注入配置文件
在springboot项目中的resources目录下新建一个文件 application.yml
编写一个实体类 Dog;原来是如何给bean注入属性值的?

package com.wlm.pojo;import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;@Component
public class Dog {@Value("老黑")private String name;@Value("18")private Integer age;public Dog() {}public Dog(String name, Integer age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}@Overridepublic String toString() {return "Dog{" +"name='" + name + '\'' +", age=" + age +'}';}
}

在SpringBoot的测试类下注入狗狗输出一下;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;@SpringBootTest
class DemoApplicationTests {@Autowired //将狗狗自动注入进来Dog dog;@Testpublic void contextLoads() {System.out.println(dog); //打印看下狗狗对象}}

输出结果:

编写一个实体类Person:

@Component //注册bean到容器中
public class Person {private String name;private Integer age;private Boolean happy;private Date birth;private Map<String,Object> maps;private List<Object> lists;private Dog dog;//有参无参构造、get、set方法、toString()方法
}

我们来使用yaml配置的方式进行注入,我们编写一个yaml配置:
application.yml

person:name: 咸鱼_翻身age: 18happy: truebirth: 2000/11/26maps: {k1: one,k2: two}lists:- ball- girl- musicdog:name: 旺财age: 3

我们刚才已经把person这个对象的所有值都写好了,我们现在来注入到我们的类中:
Person

@Component //注册bean
@ConfigurationProperties(prefix = "person")
public class Person {private String name;private Integer age;private Boolean happy;private Date birth;private Map<String,Object> maps;private List<Object> lists;private Dog dog;
}

@ConfigurationProperties作用:
将配置文件中配置的每一个属性的值,映射到这个组件中;
告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定
参数 prefix = “person” : 将配置文件中的person下面的所有属性一一对应
确认以上配置都OK之后,我们去测试类中测试一下:

@SpringBootTest
class DemoApplicationTests {@AutowiredPerson person; //将person自动注入进来@Testpublic void contextLoads() {System.out.println(person); //打印person信息}}

运行结果:所有值全部注入成功!

Person{name='咸鱼_翻身', age=18, happy=true,
birth=Sun Nov 26 00:00:00 CST 2000, maps={k1=one, k2=two},
lists=[ball, girl, music], dog=Dog{name='旺财', age=3}}

注意:
1、将配置文件的key 值 和 属性的值设置为不一样,则结果输出为null,注入失败
2、在配置一个person2,然后将 @ConfigurationProperties(prefix = “person2”) 指向我们的person2;
3、依赖需要多导一个----配置文件处理器

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

SpringBoot之----yaml语法详解相关推荐

  1. SpringBoot yaml语法详解

    SpringBoot yaml语法详解 1.yaml基本语法 2.yaml给属性赋值 3.JSR303校验 4.SpringBoot的多环境配置 1.yaml基本语法 通常情况下,Spring Boo ...

  2. Drools决策表+SpringBoot使用及语法详解

    SpringBoot+Drools决策表的使用 简介 Drools决策表 决策表部分关键字 规则部分关键字 总结 SpringBoot 项目中决策表的使用 pom配置 验证决策表格式是否正确 利用Ki ...

  3. Python的Xpath介绍和语法详解

    1.简介 XPath是一门在XML和HTML文档中查找信息的语言,可以用来在XML和HTML文档中对元素和属性进行遍历 XPath的安装 Chrome插件XPath Helper 点Chrome浏览器 ...

  4. FreeMarker基本语法详解及模板文件的组成(二)

    海浪上次给大家分享了FreeMarker基本语法详解及模板文件的组成(一)海浪今天继续分享FreeMarker基本语法详解及模板文件的组成(二) 3.2 输出变量值<?xml:namespace ...

  5. Velocity魔法堂系列二:VTL语法详解

    一.前言 Velocity作为历史悠久的模板引擎不单单可以替代JSP作为Java Web的服务端网页模板引擎,而且可以作为普通文本的模板引擎来增强服务端程序文本处理能力.而且Velocity被移植到不 ...

  6. Java8初体验(二)Stream语法详解(转)

    本文转自http://ifeve.com/stream/ Java8初体验(二)Stream语法详解 感谢同事[天锦]的投稿.投稿请联系 tengfei@ifeve.com 上篇文章Java8初体验( ...

  7. python编程语法大全-Python编程入门——基础语法详解

    今天小编给大家带来Python编程入门--基础语法详解. 关于怎么快速学python,可以加下小编的python学习群:611+530+101,不管你是小白还是大牛,小编我都欢迎,不定期分享干货 每天 ...

  8. python编程语法-Python编程入门——基础语法详解

    今天小编给大家带来Python编程入门--基础语法详解. 一.基本概念 1.内置的变量类型: Python是有变量类型的,而且会强制检查变量类型.内置的变量类型有如下几种: #浮点 float_num ...

  9. python编程if语法-Python编程入门基础语法详解经典

    原标题:Python编程入门基础语法详解经典 一.基本概念 1.内置的变量类型: Python是有变量类型的,而且会强制检查变量类型.内置的变量类型有如下几种: #浮点 float_number = ...

最新文章

  1. LeetCode 589. N-ary Tree Preorder Traversal-多子节点树前序遍历--递归,迭代--反向压栈--C++解法
  2. Matlab标识指令中字符的精细控制
  3. linux 3gpp格式转换器,Movavi Video Converter
  4. 1、【设计模式】组合模式
  5. 小型校园网络拓扑RS配置
  6. 湖南工业职业技术学院计算机协会,计算机网络协会
  7. promise 浏览器实现的源码_【大前端01-01】函数式编程与JS异步编程、手写Promise...
  8. 【APICloud系列|33】移动应用软件加固步骤,适合所有的安卓应用市场
  9. RabbitMq(二) Connection、Channels、Exchanges、Queues 等基本概念介绍
  10. npm i 命令长时间卡住的解决办法
  11. edi python_在不从edi运行的情况下调用python函数
  12. stata计量之前数据清洗的必备步骤
  13. 为什么Eclipse Iceoryx使用Helix QAC
  14. 开发中使用第三方工具/服务
  15. [转载]Ext.form.BasicForm getValues()和getFie_-Chaz-_新浪博客
  16. 太阳直射点纬度计算公式_高中地理——每日讲1题(极昼、极夜、太阳高度角、太阳辐射)...
  17. 【项目工程】利用安卓手机NFC功能和KPC物联网仿真平台的智能花盆设计
  18. css画一个卡通动画
  19. 基于Jetson NX的模型部署
  20. loadrunner没有 demo_scenario.lrs

热门文章

  1. 关于String类中的类型转换一些方法
  2. https://p.3.cn/prices/mgets爬取京东商品信息报错error pdos_captcha
  3. [Linux] 假死分析
  4. linux中负载值为多少正常_什么是cpu负载_cpu负载多少正常_详解Linux系统的CPU负载均值...
  5. 机器学习:朴素贝叶斯算法与垃圾邮件过滤
  6. 基于ISO13400(DoIP)实现车辆刷写,你知多少?
  7. 推荐几个itouch必安装软件|使用技巧
  8. Linux磁盘对拷后无法开机,硬盘对拷后无法开机怎么办?
  9. 网站推广手段集锦(2008七夕节中国情人节版)
  10. 个人工作、学习常用网站