Spring Boot 配置_yaml语法介绍 day02

一、Spring Boot 的全局配置文件(application.properties、application.yml)

  1.这两种配置文件是SpringBoot 支持的对默认配置修改的格式。命名和格式是一样的,不能随意改名。我们来分别说一下这两种格式的配置文件对SpringBoot配置及区别。

   这两个配置文件的作用:SpringBoot在底层已经帮我们默认配置好,我们可以通过配置文件来修改默认的配置,如对Tomcat的端口配置等等。

   2.首先来说一下的是application.properties这个文件。(我们来修改tomcat端口)

    

    

    2.1启动主程序,这是tomcat控制台打印的信息

    

    

    2.2修改成功

      

  3.对于application.yml这个文件而言,修改tomcat端口。(注释掉application.properties的端口配置)

      3.1在application.properties同一个路径下新增一个"application.yml",如下图。

      

      添加修改tomcat代码。

      

      运行效果

       

     访问效果(还是一样的效果)

       

   这两种简单的配置比较,application.yml比较简洁、配置简单。推荐使用。以下着重介绍application.yml语法。

二、yaml 语法(大小写敏感)

    1.yaml语法的精髓在与对空格的使用,可谓使用得淋漓尽致。

    yaml语法主要是K:(冒号后面是空格) V值的形式(注意空格的使用)

    空格的另一个重要的使用时对配置文件的层级关系的控制,如:

      

server:
port: 8090
address: /hello -->这:后都有空格,空格也控制层级关系

     2.yaml对不同类型的值的操作:(只要记得 空格是神奇的存在)

      对于(数值、字符串、和布尔)对于配置的值是字符串,不用双引号和单引号,直接写就可以了,若使用双引号的话会将特殊字符转义,使用单引号则会原样输出,不会对

特殊字符转义

        例如:name: "小二 过来"-------------------->会这样输出       小二   换行   过来

           name: '小二 过来'--------------------->会这样输出       小二 过来(没有变化)

 

      对于K : V形式(对象、Map)键值对类型

         方法一、对象和Map占一行,属性和值会在另一行

Person:
  name: lcaiqin
  age: 23

        方法二、将所用配置写在一行里面  

Person: {name: lcaiqin,age: 23}
//--->>注意空格的使用

     对于数组(List,Set)

          方法一、使用- value的形式。如:注意是- 空格 值

Pets:
  - dog
  - cat
  - pig

         

          方法二、使用一行解决。注意是:冒号  空格

Pets: [cat,dog,pig]

三、yaml配置文件的值注入

    在实体类中编写如下代码:

@Component                        //@ConfigurationProperties在Spring容器中运行需要组件的支持
@ConfigurationProperties(prefix = "person")    //告诉SpringBoot的所有属性和配置文件映射起来。prefix = "person"指从配置文件的什么位置映射
public class Person {

    //基本类型
    private String name;
    private Integer age;
    private Boolean Boos;

    //对象
    private Cart cart;
    private Map<String,Object> map;

    //数组
    private List<Object> list;

    写法一、在application.yml中输入如下代码。

person:
  name: 独而不孤
  age: 23
  Boos: true
  cart:
    name: 奥迪
    color: 白色
  map:
    k1: v1
    k2: v2
  list:
    - apple
    - pear
    - eat

    

    写法二、在application.yml中输入如下代码。(一行元素搞定)

    

person:
  name: 独而不孤
  age: 23
  cart: {name: 奥迪,color: 白色}
  list: [apple,pear,eat]
  map: {k1: v1,k2: v2}
  Boos:true

四、application.properits配置文件注入

  bean中代码:

//基本类型
    @Value("${person.name}")    //使用el表达式,从配置文件中取出
    private String name;
    @Value("${person.age}")
    private Integer age;
    private Boolean Boos;

  application.propeerties代码:

person.age=23
person.boos=true
person.cart.name=奥迪
person.cart.color=白色
person.name=独而不孤
person.map.k1=值1
person.map.k2=值2
person.list.list1=apple

  运行效果:乱码

    

   解决乱码:"File">>"Settings">>"Editor">>"File Encodings"

 

 

  这样就可以了。

 

五、@Value和@ConfigurationProperties的比较(@ConfigurationPropertis要配合@Component)

 

@ConfigurationPropertis

@Value

功能上

对所有的属性进行注入值

一个一个注入值

语法复杂程度

简单(可以一行一个一元素)

元素冗余

SpEL

不支持

支持

JSR303数据校验

支持

不支持

复杂类型封装

支持

不支持

       个人觉得(除了需要对个别的属性赋值之外)都建议使用@ConfigurationProperties

     1.对JSR303数据校验

  

@Component
@ConfigurationProperties(prefix = "person")
@Validated    -->加入此标签
public class Person {

    //基本类型
    @Email
    private String name;
    private Integer age;
    private Boolean Boos;

   运行效果

   

作者:独而不孤

-------------------------------------------

个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!

如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!

万水千山总是情,打赏一分行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主,哈哈哈(っ•̀ω•́)っ✎⁾⁾!

喂一下的我仓鼠谢谢
原文地址:https://www.cnblogs.com/lcaiqin/p/10371221.html