目录

  • 提前预知
  • 01、文件类型
    • 1.1、基本语法
    • 1.2、数据类型
  • 2、配置提示
  • 3、配置文件占位符
  • 4、配置文件中的Profile(难点)
  • 5、配置文件加载位置
  • 6、对比分析

提前预知

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

01、文件类型

  • yaml类型的配置文件

1.1、基本语法

  • k:(空格)v

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

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

  • 区分大小写

  • 例如:

server:port: 8088path: /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: v1k2: v2k3: 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: devserver: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配置文件

02-SpringBoot核心功能之配置文件相关推荐

  1. 002 第一季SpringBoot2核心技术-核心功能:配置文件、Web开发(原生组件)、数据访问、单元测试、指标监控、原理解析:@Value、命令行参数、手动获取bean、自定义starter

    三.核心技术之- ->核心功能 1. 配置文件 1.1 文件类型 1.1.1 properties 同以前的properties用法 优先级高于yml的方式. 1.1.2 yaml 1) 简介 ...

  2. 一文带你看懂Springboot核心功能及优缺点

    点击上方[视学算法]→右上角[...]→[设为星标⭐] SpringBoot核心功能 1.独立运行Spring项目 Spring boot 可以以jar包形式独立运行,运行一个Spring Boot项 ...

  3. 【零基础入门SpringBoot2】—— 核心功能_配置文件与Web开发

    一.配置文件

  4. Springboot总结,核心功能,优缺点

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:lizmit https://blog.csdn.net/q ...

  5. Shiro 核心功能案例讲解 基于SpringBoot 有源码

    Shiro 核心功能案例讲解 基于SpringBoot 有源码 从实战中学习Shiro的用法.本章使用SpringBoot快速搭建项目.整合SiteMesh框架布局页面.整合Shiro框架实现用身份认 ...

  6. 基于SSM在线考试系统的核心功能之一自动组卷的实现 SpringBoot版本

    基于SSM在线考试系统的核心功能之一–>自动组卷的实现 大家都知道,在考试系统中有个核心的功能 就是组卷的过程 什么是组卷呢? 组卷分成 : 手动组卷 和 随机组卷 手动组卷就是操作人选择对应的 ...

  7. 自己实现spring核心功能 一

    聊聊spring spring对于java开发者来说,是最熟悉不过的框架了,我们日常开发中每天都在使用它.它有着各种各样的好处,简单易用,得心应手... ... 我们一说到spring就会讲到ioc ...

  8. SpringBoot核心

    1.基本配置 1.1入口类和@SrpingBootApplication SpringBoot通常有一个名为*Application的入口类,入口类里有一个main方法,这个main方法就是一个标准的 ...

  9. SpringBoot原理-SpringBoot核心运行原理

    导语   Spring Boot最为核心的功能就是自动配置,所有功能的实现都是基于"约定优于配置"的原则,但是Spring Boot是如何实现自动配置的功能的,下面就通过源码学习S ...

最新文章

  1. iOS开发UI篇—多控制器和导航控制器简单介绍
  2. 在OpenCV中利用卷积进行图像滤波
  3. Win10 Microsoft Store 微软商店 Error 0x00000193 解决方法
  4. unity工程包怎么上传git_如何将Git用于Unity3D源代码管理?
  5. 项目微管理13 - 新人
  6. python-用Map, Filter, Reduce代替For循环
  7. 思科网络基础配置命令大全(二)
  8. 面试提问vue中v-if与v-show的区别以及使用场景
  9. 图像的放大与缩小——双线性插值放大与均值缩小
  10. [命令模式]在游戏开发中的应用
  11. c语言标识符附录,附录AC语言运算符表.PDF
  12. 简单编译器的实现 (四)
  13. coverity静态安全扫描分析软件linux环境搭建
  14. C语言:字符串中各类字符数的统计
  15. 90.精读《极客公园 2019》
  16. 打字机效果的实现与应用
  17. c语言分段函数x2-sinx,大学高等数学: 第二章第五讲三种分段函数求导法, 再也不担心了...
  18. 印度有个 “扎克伯格庙”?
  19. 软件生命周期和开发模型
  20. 页面各手机屏幕的尺寸

热门文章

  1. JAVA中方法的调用(详细整理)
  2. JAVA什么是反射?
  3. 1500元投影仪性价比排名!哪款才是最优选择?
  4. speedoffice表格中怎么删除重复数据只保留一个
  5. 微信公众号如何一天能推送多条图文消息
  6. 零基础学画画,一套非常详细的手绘教程,4步教会你画,收藏学习
  7. 妖神记自建服务器,妖神记 - 服务退换中心 - 腾讯游戏
  8. 闭包 (closure)详细解释(一)
  9. Centos下载版本选择,以及安装
  10. vr直播是什么意思?vr直播需要什么设备?