SpringBoot--YAML基本语法 - Go语言中文社区

SpringBoot--YAML基本语法


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

server:
	port:8081
	path:/hello

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

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_42061487/article/details/90730476
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-01 22:08:25
  • 阅读 ( 1078 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢