• 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;

       运行效果

       

    作者:独而不孤

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

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

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

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

    喂一下的我仓鼠谢谢
  • 相关阅读:
    .Net解析html文档类库HtmlAgilityPack完整使用说明
    C# 中使用JSON
    Property 'submit' of object #<HTMLFormElement> is not a function
    bin/...的访问被拒绝被拒绝的问题
    vs2012 ultimate 密钥
    ASP.NET-自定义HttpModule与HttpHandler
    jQuery同步Ajax带来的UI线程阻塞问题及解决办法
    Windows API
    服务器不安装Excel,实现导出Excel功能
    内存或磁盘空间不足,Microsoft Office Excel 无法再次打开或保存任何文档。 [问题点数:20分,结帖人wenyang2004]
  • 原文地址:https://www.cnblogs.com/lcaiqin/p/10371221.html
Copyright © 2020-2023  润新知