02-SpringBoot核心功能之配置文件
目录
- 提前预知
- 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核心功能之配置文件相关推荐
- 002 第一季SpringBoot2核心技术-核心功能:配置文件、Web开发(原生组件)、数据访问、单元测试、指标监控、原理解析:@Value、命令行参数、手动获取bean、自定义starter
三.核心技术之- ->核心功能 1. 配置文件 1.1 文件类型 1.1.1 properties 同以前的properties用法 优先级高于yml的方式. 1.1.2 yaml 1) 简介 ...
- 一文带你看懂Springboot核心功能及优缺点
点击上方[视学算法]→右上角[...]→[设为星标⭐] SpringBoot核心功能 1.独立运行Spring项目 Spring boot 可以以jar包形式独立运行,运行一个Spring Boot项 ...
- 【零基础入门SpringBoot2】—— 核心功能_配置文件与Web开发
一.配置文件
- Springboot总结,核心功能,优缺点
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:lizmit https://blog.csdn.net/q ...
- Shiro 核心功能案例讲解 基于SpringBoot 有源码
Shiro 核心功能案例讲解 基于SpringBoot 有源码 从实战中学习Shiro的用法.本章使用SpringBoot快速搭建项目.整合SiteMesh框架布局页面.整合Shiro框架实现用身份认 ...
- 基于SSM在线考试系统的核心功能之一自动组卷的实现 SpringBoot版本
基于SSM在线考试系统的核心功能之一–>自动组卷的实现 大家都知道,在考试系统中有个核心的功能 就是组卷的过程 什么是组卷呢? 组卷分成 : 手动组卷 和 随机组卷 手动组卷就是操作人选择对应的 ...
- 自己实现spring核心功能 一
聊聊spring spring对于java开发者来说,是最熟悉不过的框架了,我们日常开发中每天都在使用它.它有着各种各样的好处,简单易用,得心应手... ... 我们一说到spring就会讲到ioc ...
- SpringBoot核心
1.基本配置 1.1入口类和@SrpingBootApplication SpringBoot通常有一个名为*Application的入口类,入口类里有一个main方法,这个main方法就是一个标准的 ...
- SpringBoot原理-SpringBoot核心运行原理
导语 Spring Boot最为核心的功能就是自动配置,所有功能的实现都是基于"约定优于配置"的原则,但是Spring Boot是如何实现自动配置的功能的,下面就通过源码学习S ...
最新文章
- iOS开发UI篇—多控制器和导航控制器简单介绍
- 在OpenCV中利用卷积进行图像滤波
- Win10 Microsoft Store 微软商店 Error 0x00000193 解决方法
- unity工程包怎么上传git_如何将Git用于Unity3D源代码管理?
- 项目微管理13 - 新人
- python-用Map, Filter, Reduce代替For循环
- 思科网络基础配置命令大全(二)
- 面试提问vue中v-if与v-show的区别以及使用场景
- 图像的放大与缩小——双线性插值放大与均值缩小
- [命令模式]在游戏开发中的应用
- c语言标识符附录,附录AC语言运算符表.PDF
- 简单编译器的实现 (四)
- coverity静态安全扫描分析软件linux环境搭建
- C语言:字符串中各类字符数的统计
- 90.精读《极客公园 2019》
- 打字机效果的实现与应用
- c语言分段函数x2-sinx,大学高等数学: 第二章第五讲三种分段函数求导法, 再也不担心了...
- 印度有个 “扎克伯格庙”?
- 软件生命周期和开发模型
- 页面各手机屏幕的尺寸