SpringBoot--YAML基本语法

1.基本语法
k:(空格)v:表示一对键值对(空格必须有)
以空格的缩进来控制层级的关系;只要是左对齐的一列数据,都是同一层级的

server:
	port:8081
	path:/hello

属性和值都是大小写敏感的
2.值的写法
字面量:普通的值(数字,字符串,布尔)
k:v :字面直接来写;
字符串默认不用加上单引号或者双引号
" ":双引号;不会转义字符串里面的特殊字符;特殊字符作为本身想表示的意思
name:“zhangsan\n lisi”:输出; zhangsan 换行 lisi
’ ’ :单引号;会转义特殊字符,特殊字符串最终只是一个普通的字符串数据
name:“zhangsan\n lisi”:输出; zhangsan \n lisi

对象:(属性和值)(键值对):
k:v :在下一行来写对象的属性和值 的方式
对象还是k:v的方式

	friends:
				lastName:zhangsan
				age  :  20	

行内写法:

friends :{lastName:zhangsan ,age:18}

数组(list,Set)

pets
	- cat
	- dog
	- pig

行内写法

pets:[cat,dog,pig]

3.配置文件值注入
配置文件

person:
  lastName: zhangsan
  age: 18
  boss: false
  birth: 2017/12/12
  maps: {k1:v1,k2:12}
  lists:
    - lisi
    - zhaoliu
  dog:
    name: 小狗
    age: 2

javaBean

/*
将配置文件中配置的每一个属性的值,映射到这个组件中
@ConfigurationProperties:告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定
 prefix = "person":配置文件中哪个下面所有属性进行一一映射
只有这个组件是容器中的组件,才能容器提供@ConfigurationProperties功能
 */

@Data
@Component
@ConfigurationProperties(prefix = "person")
public class Person {

    private String lastName;
    private Integer age;
    private Boolean boss;
    private Date birth;

    private Map<String,Object> maps;
    private List<Object> lists;
    private Dog dog;


}

我们可以导入配置文件处理器,以后 编写配置就有提示了

 <!--配置文件提示 导入配置文件处理器-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
        </dependency>

配置文件值注入:
1.解决properties配置文件在idea中默认utf-8可能会乱码
在这里插入图片描述
2.@Value获取值和@ConfigurationProperties获取值比较

@ConfigurationProperties@Value
功能批量注入配置文件中的属性一个个指定
松散绑定支持不支持
SPEL不支持支持
JSR303数据校验支持不支持
复杂类型封装支持不支持

配置文件yml还是properties他们都能获取到值
如果说,我们只是在某个业务逻辑中需要获取以下配置文件中的某项值,使用@Value
如果说,我们专门编写一个javaBean来和配置文件进行映射,我们就直接使用@ConfigurationProperties
3.配置文件注入值数据校验

@Data
@Component
//@ConfigurationProperties(prefix = "person")
public class Person {

    /**
     * <bean class="Person">
     *      <property name="lastName" value="字面量"/${key}从环境变量,配置文件中获取值/#{SpEl}"></property>
     * <bean/>
     */
    @Value("${person.last-name}")
    private String lastName;
    @Value("#{11*2}")
    private Integer age;
    @Value("true")
    private Boolean boss;
    private Date birth;

    private Map<String,Object> maps;
    private List<Object> lists;
    private Dog dog;
}

4.配置文件加载位置
springboot启动扫描以下位置的application.properties或者application.yml文件作为Springboot默认配置文件
-file:…/config/
-file:…/
-classpath:/config/
-classpath:/
优先级由高到低,高优先级的配置会覆盖低优先级的配置
SpringBoot会从这四个位置全部加载主配置文件;互补配置

我们还可以通过spring.config.location来改变默认的配置文件位置

项目打包好以后,我们可以使用命令行参数的形式,启动项目的时候来指定配置文件的位置;指定配置文件和默认加载这些配置文共同起作用形成互补配置;

5.外部配置加载顺序
SpringBoot也可以从以下位置加载配置;优先级从高到低;高优先级的配置覆盖低优先级的配置,所有的配置会形成互补配置
1)命令行参数
java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar --server.port=8087 --server.context-path=/abc
多个配置用空格分开;–配置项=值

2)优先加载带profile
jar包外部的application-{profile}.properties或application.yml{带spring.profile}配置文件
jar包内部的application-{profile}.properties或application.yml{带spring.profile}配置文件

再来加载不带profile
jar包外部的application.properties或application.yml(不带spring.profile)配置文件
jar包内部的application.properties或application.yml(不带spring.profile)配置文件

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值