02-SpringBoot核心功能之配置文件

提前预知

  • 课程笔记来源于雷神的SpringBoot2教程
  • 参考文档地址:参考文档
  • SpingBoot支持的配置文件有很多种,原生的配置文件使用比较麻烦,一般使用properties结尾的配置文件,或者是yaml配置文件,下面主要介绍yaml配置文件的使用语法,如果你使用properties类型的配置文件,就不必往下看了。

01、文件类型

  • yaml类型的配置文件

1.1、基本语法

  • k:(空格)v

表示一对键值对(空格必须有)

  • 如果有层级关系,以空格的缩进来控制层级关系,只要是左对齐的一列数据,都是同一个层级的

  • 区分大小写

  • 例如:

server:
	port: 8088
	path: /hello

1.2、数据类型

  • 字面量:单个的、不可再分的值。date、boolean、string、number、null。

字符串默认不用加上单引号或者双引号,也可以加,但是单引号和双引号的功能有点区别

双引号:会转义特殊字符

单引号;不会转义字符串里面的特殊字符,特殊字符最终只是一个普通的字符串数据

  • 对象:键值对的集合。map、hash、set、object
  • 数组:一组按次序排列的值。array、list、queue
  • 例如:
字面量:
	k: v
    
对象:
 	行内写法:  
 		k: {k1:v1,k2:v2,k3:v3}
 	行间写法
		k: 
  		   k1: v1
  		   k2: v2
  		   k3: v3
数组:
	行内写法:  
        k: [v1,v2,v3]
	行间写法:
        k:
 	      - v1
 		  - v2
 		  - v3

2、配置提示

  • 自定义的类和配置文件绑定一般没有提示,在POM文件添加下面的依赖,会有自动提示功能:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-configuration-processor</artifactId>
    <optional>true</optional>
</dependency>


 <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.springframework.boot</groupId>
                            <artifactId>spring-boot-configuration-processor</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

3、配置文件占位符

  • 这个配置文件占位符的设置在properties配置文件中和yml配置文件中都可以使用
  • 占位符的格式为:${占位符}
    例如:person.last-name=小仙女${random.int[10,20]}
  • 随机数占位符
${random.value}
${random.int}:使用一个随机的整数来作为替代值
${random.long}:使用一个随机的长整数来作为替代值
${random.int(10)}:使用0-10之间的随机整数来作为替代值
${random.int[10,20]}:使用10-20之间的整数来最为替代值
  • 占位符获取之前配置的值,如果没有可以是用:指定默认值
//假设person.hello=jinmao
//获取person.hello的值:jinmao_dog
//获取不到使用默认的hello:hello_dog
person.dog.name=${person.hello:hello}_dog

4、配置文件中的Profile(难点)

  • Profile:是Spring对不同环境提供不同配置功能的支持,可以通过激活指定参数等方式快速切换环境

  • 1,多Profile模式:使用多个配置文件,默认使用application.properties配置文件

    • 格式: application-{profile}.properties/yml
    • 例如:
      application-dev.properties:开发环境
      application-prod.properties:生产环境
  • 2,多Profile模式(yml支持多文档块方式):使用文档块,文档块之间使用---隔开

注意:
properties类型的配置文件不支持文档块模式,配置文件的优先级是perproties类型大于yml类型.
如果使用 properties类型配置文件可以使用多个properties配置文件,在启动项目的时候指定响应的配置文件即可。

我们可以在默认环境的profiles属性中设置active属性用来激活不同的环境,如果这个值为空,就激活默认环境不为空激活对应环境

除了在配置文件里面使用active激活响应的环境之外,我们还有两种激活环境的方式:
1.启动项目的时候设置虚拟机参数:-D:spring.profiles.active=环境名称
2.将项目打成jar包,启动的时候设置参数: java -jar 文件名.jar --spring.profiles.active=环境名称

  • 举例:
# 默认环境
spring:
  profiles:
    active:

server:
  port: 8081
---
# 开发环境
spring:
  profiles: dev

server:
  port: 8081
---
# 测试环境
spring:
  profiles: test
server:
  port: 8082

5、配置文件加载位置

  • springboot启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件
项目根目录:./config/
项目根目录:./
classpath:/config/
classpath:/

在这里插入图片描述

  • 优先级由高到底,高优先级的配置会覆盖低优先级的配置
  • SpringBoot会从这四个位置全部加载主配置文件,互补配置
  • 我们还可以通过spring.config.location来改变默认的配置文件位置(项目打包好之后使用此命令
    • 启动打包好的项目的时候来指定配置文件的新位置,java -jar 文件名.jar --spring.config.location=G:/application.properties
    • 指定配置文件和默认加载的这些配置文件共同起作用形成互补配置

6、对比分析

  • @Value获取值和@ConfigurationProperties获取值比较
@ConfigurationProperties@Value
功能批量注入配置文件中的属性一个个指定
松散绑定(松散语法)支持不支持
SpEL不支持支持
JSR303数据校验支持不支持
复杂类型封装支持不支持
  • 配置文件:@ConfigurationProperties@value注解的选择

    • 如果说,我们只是在某个业务逻辑中需要获取一下配置文件中的某项值使用@Value
    • 如果说,我们专门编写了一个javaBean来和配置文件进行映射,我们就直接使用@ConfigurationProperties
  • @PropertySource注解:

    • @PropertySource注解:加载指定的配置文件
    • 这个注解作用在Bean类上,这个Bean会加载指定的配置文件
  • @ImportResource注解(不推荐):

    • @ImportResource注解:给springboot容器中添加组件,导入Spring的配置文件,让配置文件里面的内容生效

    • 注意:Spring Boot里面没有Spring的配置文件,我们自己编写的配置文件,也不能自动识别,想让我们自己配置的Spring的配置文件生效可以使用@ImportResource注解,将这个注解标注在一个配置类上即可

    • 在resource文件夹下编写一个spring配置文件:beans.xml

    • 分析:

      • 其实就是先把要添加的组件(bean)配置到spring的配置文件中(XML配置文件),然后通过在配置类上添加@ImportResource注解将XML配置文件中的bean添加到springboot的容器中。
      • 对比下面的@Bean注解会发现,上面的注解需要多写一个XML配置文件
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彤彤的小跟班

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值