• Spring Boot配置文件和yaml语法



    📃个人主页: 不断前进的皮卡丘
    🌞博客描述: 梦想也许遥不可及,但重要的是追梦的过程,用博客记录自己的成长,记录自己一步一步向上攀登的印记
    🔥网站推荐:千里之行,始于足下。每天坚持刷题,巩固所学知识,也为将来找工作,面试做好准备----- 刷题神器

    🏖️1.全局配置文件

    🌈1.1全局配置文件概述

    Spring Boot使用一个全局的配置文件,通过配置文件,可以修改Spring Boot自动配置的默认值,配置文件名是固定的,文件名必须是application
    配置文件格式properties或者yml,比如application.properties或者application.yml
    比如,我们可以通过修改application.properties来自定义服务器的端口号
    在这里插入图片描述
    我们来新建一个项目
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    🌈1.2配置文件的位置和加载顺序

    • /config/:当前项目根目录下的config目录下
    • /:当前项目的根目录下
    • /resources/config/:resources目录下的config目录下
    • /resources/:resources目录下

    加载的优先级是从上到下,由高到低
    在这里插入图片描述

    🏖️2.多环境配置

    开发过程中,至少需要三个环境(开发环境dev-测试环境test-生产环境pro),但是每一个环境的配置都不一样,比如数据库等各种配置,Spring Boot提供多环境配置的机制,让开发者灵活根据需求而切换不同的配置环境
    比如:我们可以通过在不同环境下面,服务器端口号不同进行测试

    🌈 2.1多环境配置文件

    在Spring Boot中多环境配置文件名必须满足:application-{profile}.properties的固定格式。
    其中,{profile}对应的是我们的环境标识,比如:

    application-dev.properties:开发环境
    application-test.properties:测试环境
    application-prod.properties:生产环境
    
    • 1
    • 2
    • 3

    🌈2.2激活某个环境配置

    在application.properties文件中添加配置,spring.profiles.active={profile} 来激活
    比如:

    spring-profiles.active=test  表示开启测试环境
    
    • 1

    在这里插入图片描述
    在这里插入图片描述

    🏖️3.yaml

    🌈3.1yaml概述

    yaml(YAML A/isn’t Markup Language),后缀名是.yaml或者.yml。有两层含义

    • YAML是一个标记语言
    • YAML不是一个标记语言

    yaml是以数据为中心,比如json\xml等更适合作为配置文件
    使用#添加注释

    # 服务器端口
    server:
    	port: 8080
    
    • 1
    • 2
    • 3

    当我们创建一个Spring Boot项目的时候,它默认是给的配置文件是.properties的形式,我们也可以把它修改成yaml的形式
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    🌈3.2基本语法

    • k:(空格)v,表示一对键值对,空格一定要有

    • 用缩进来控制层级关系,只要是左对齐的一列数据,都是同一个层级的

    • 属性和值是区分大小写的

    • 缩进的空格数不重要,但同级元素必须左侧对齐。

    例如:

    spring:
      profiles: dev
      
      datasource:
        url: jdbc:mysql://127.0.01/banchengbang_springboot
        username: root
        password: root
        driver-class-name: com.mysql.jdbc.Driver
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    🌈3.3值的写法

    YAML 支持以下三种数据结构:

    • 对象:键值对的集合
    • 数组:一组按次序排列的值
    • 字面量:单个的、不可拆分的值

    ❄️3.3.1字面量

    • 字面量:普通的值(数字,字符串,布尔)
      • 字符串默认不需要加上单引号或者双引号
      • 字符串如果加上双引号,那么转义字符有效
      • 字符串如果加上单引号,那么转义字符只是一个普通的字符串数据
      • 字面量是指单个的,不可拆分的值,例如:数字、字符串、布尔值、以及日期等
    name: "zhangsan \n lisi"
    # 输出的结果是
    zhangsan
    lisi
    
    • 1
    • 2
    • 3
    • 4
    name: 'zhangsan \n lisi'
    # 输出的结果是
    zhangsan \n lisi
     
    
    • 1
    • 2
    • 3
    • 4

    ❄️3.3.2 日期类型

    • 日期类型
      • 日期格式必须是 :“yyyy/MM/dd”
    birth: 1980/6/15
    
    • 1
    • 对象(属性和值)、Map(键值对)

    ❄️3.3.3对象

    对象写法方式一:换行缩进

    person: 
      lastName: zhangsan
      age: 20
      book:
        price: 222
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    对象写法方式二:行内写法

    book: {name: java,price: 2000}
    
    • 1

    ❄️3.3.4 数组、List、Set

    缩进的写法:用-表示数组中的一个元素

    pets:
      - cat
      - dog
      - pig
    
    • 1
    • 2
    • 3
    • 4

    行内写法,外部使用[]表示

    pets: [cat,dog,pig]
    
    • 1

    🏖️4.利用配置文件来给属性赋值

    🌈4.1@Value,通过${}直接获得配置文件的配置值注入

    在这里插入图片描述
    测试
    在这里插入图片描述

    🌈4.2@ConfigurationProperties

    可以让属性和配置文件中的配置自动绑定,需要指明一个prefix(前缀)

    先把文件编码方式改成UTF-8>
    还是以刚刚的Book类为例子,我们可以先在pom.xml文件中添加依赖
    在这里插入图片描述
    加入这个依赖的作用其实是为了便于我们写代码,我们在配置文件中可以看到提示
    在这里插入图片描述
    在这里插入图片描述
    测试一下
    在这里插入图片描述

    🌈4.3@EnableConfigurationProperties

    • 方法一:通过@Component注解可以把指定类注入到Spring容器中
    • 方法二:在Spring Boot启动类上,添加@EnableConfigurationProperties,把指定的类注入到Spring容器中,推荐这个方法,便于统一管理
      在这里插入图片描述
      我们点进这个注解去看看(大家对源码感兴趣的可以自己去深入了解)
      在这里插入图片描述

    🌈4.4@PropertySource

    可以指定加载一个独立的配置文件信息
    用法:

    • 加载指定的属性文件(*.properties)到 Spring 的 Environment 中。可以配合 @Value 和@ConfigurationProperties 使用。
    • @PropertySource 和 @Value
      组合使用,可以将自定义属性文件中的属性变量值注入到当前类的使用@Value注解的成员变量中。
    • @PropertySource 和 @ConfigurationProperties
      组合使用,可以将属性文件与一个Java类绑定,将属性文件中的变量值注入到该Java类的成员变量中。

    比如说,我们本来是在全局配置文件中指定那些属性的信息,但是可能有很多需要配置,这个时候,我们可以把这些抽取出来,成为一个个小的配置文件,但是要注意的是,这个时候,这些配置文件只能是properties形式的,不能是yaml形式的
    在这里插入图片描述
    在这里插入图片描述
    有一个地方需要注意,这里的话,我们得使用@Component注解,如果使用@EnableConfigurationProperties进行注入的话,其实我们在测试的时候,会发现属性是null

    🏖️5.自定义配置类

    从Spring3.0,@Configuration用于定义配置类,可以替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法的返回值会被创建实例,托管给Spring容器

    🌈5.1@Configuration

    @Configuration标注在类上面,相当于把这个类作为Spring的xml配置文件中的 ,作用是配置spring容器(应用上下文)
    @Configuration注解的配置类有下面的几个要求:
    1️⃣不可以是final类型
    2️⃣不可以是匿名类
    3️⃣嵌套的configuration必须是静态类

    🌈5.2@Bean

    @Bean标注在方法上(返回某个实例的方法),等价于spring的xml配置文件中的,作用是注册bean对象

    🌈5.3代码演示

    我们先写一个实体类Stu
    在这里插入图片描述
    然后写一个自定义的配置类
    在这里插入图片描述
    测试
    在这里插入图片描述

    🌈5.4查看启动类的注解

    在这里插入图片描述
    点进去@SpringBootApplication注解
    在这里插入图片描述
    我们可以看到里面有@ComponentScan(包扫描)和@SpringBootConfiguration(继承于@Configuration),这样子就会把扫描到的包下面的类注入到spring容器中

  • 相关阅读:
    python_logging日志模块按大小和时间分割方法
    完全背包转化为多重背包
    (七)Python函数和lambda表达式
    c语言练习89:链表的使用
    java基础之组合和继承
    【校招VIP】计算机网络之TCP/IP模型归纳
    MyBatis--获取参数值
    网络协议学习DAY1
    CoreData 在新建或更新托管对象中途发生错误时如何恢复如初?
    jmeter逻辑控制器和定时器
  • 原文地址:https://blog.csdn.net/qq_52797170/article/details/126063902