当前位置: 首页 > news >正文

【SpringBoot入门】SpringBoot的配置

SpringBoot的配置文件

  • 一、SpringBoot配置文件分类
  • 二、yaml 概述
  • 三、多环境配置
  • 四、@Value 和 @ConfigurationProperties
  • 五、总结

一、SpringBoot配置文件分类

SpringBoot 是基于约定的,很多配置都是默认的(主方法上@SpringBootApplication注解的子注解@EnableAutoConfiguration实现的,是在META-INF/spring.factories中的自动配置了,可以看狂神的运行原理的解释,它是boot2解析,boot3里面实现用的更多的是流(Stream),其他没怎么变)。

但是如果想使用自己的配置替换默认配置或添加其他配置的话,可以使用application.properties或者application.yml(application.yaml)进行配置。

  1. 遵循框架的规则,默认配置文件名称:application
  2. 在同一级目录下的优先级:properties>yml>yaml,这个如果没看源码也可以通过测试得出。

二、yaml 概述

首先需要明白的yaml是一种语言,是 “YAML Ain’t a Markup Language” (YAML不是一种标记语言)的递归缩写。百度上解释是它是以数据作为中心,而不是以标记语言为重点!.yml 是用YAML语言编写的配置文件,YAML的诞生是参考JSON,XML和SDL等语言。
居然是语言,就有它的语法、格式。

下面给出是.yml配置文件的案例:

house:family:name: Doeparents:- John- Janechildren:- Paul- Mark- Simoneaddress:number: 34street: Main Streetcity: Nowheretownzipcode: 12345
  • YAML语法特点
    • #可以用来注释
    • 每个散列表的成员用冒号+空白": "分开键值和内容。(空格必须存在)
    • 使用缩进表示层级关系,但是不能使用TAB键,只允许空格
    • 结构可以通过缩进来表示,连续的成员通过减号"-“来表示,或者使用”{}"

注意:

  • “ ” 双引号,不会转义字符串里面的特殊字符 , 特殊字符会作为本身想表示的意思; 比如 :name: “kuang \n shen” 输出 :kuang 换行 shen

  • ‘’ 单引号,会转义特殊字符 , 特殊字符最终会变成和普通字符一样输出 比如 :name: ‘kuang \n shen’ 输出 :kuang \n shen
    (引用狂神说的注意)

下面写一个 application.yml 配置文件,进行测试

server:port: 9000 #修改端口号servlet:context-path: /xxx #修改上下文路径

在这里插入图片描述需要注意的是,它还可以进行参数引用,使用${??},例如:

port: 9001
server:port: ${port}servlet:context-path: /xxx

在这里插入图片描述.properties小编觉得应该都会用,就不多写了,yml是被推荐的配置方式,更直观吧。

三、多环境配置

在项目进行过程中,除了有开发环境,还有测试环境,上线环境等。每个环境有不同的配置信息,例如端口,上下文件,数据库的url,用户名、密码等等。

使用多环境配置文件,可以方便的切换不同的配置。

使用方式:创建多个配置文件,名称规则:application-环境名称.properties(yml)

例如:
创建开发环境的配置文件:application-dev.properties(application-dev.yml)
创建测试使用的配置文件:application-test.properties(application-test.yml)

配置下面的语句就可以实现环境切换:

.yml:

spring:profiles:active: 环境名称

.properties

spring.profiles.active=环境名称

测试:

准备好了三个配置文件
在这里插入图片描述application.yml的内容

spring:profiles:active: dev
server:port: 8080

application-dev.yml的内容

server:port: 9001servlet:context-path: /yyy

测试结果
在这里插入图片描述
可以观察出:环境进行了切换后,application.yml中的后面内容不起效.

四、@Value 和 @ConfigurationProperties

下面是application.yml配置。

server:port: 8082servlet:context-path: /demo# 配置key=value
school:name:- 合肥师范- 武汉大学address: 合肥
  • @Value测试
    在这里插入图片描述* @ConfigurationProperties测试

在这里插入图片描述
如果直接这样,那么配置文件中的name注入不进去(会为null),因为配置文件中的是多成员。

如果是这样那么就可以注入成功。数组也是可以的。
在这里插入图片描述在这里插入图片描述

注意:@ConfigurationProperties 注解的使用,一定要记得要对 prefix属性进行赋值(默认是空字符串) ,它会在配置文件中查询 prefix 这个元素,然后进行“映射”。

下面可以看看狂神说这个图,对@Value和@ConfigurationProperties进行个对比

在这里插入图片描述

五、总结

小编写的这篇博客没有对properties配置进行说明,其实用法是一样的。而且SpringBoot官方推荐我们使用yaml进行配置,所以这里讲解和例子都是用的yml配置。

如果我们在某个业务中,只需要获取配置文件中的某个值,可以使用一下 @value;

如果说,我们专门编写了一个JavaBean来和配置文件进行一一映射,就直接@ConfigurationProperties,不要犹豫!因为它不单单可以做到简单类型的映射。

推荐文献:
狂神说SpringBoot03:yaml配置注入

http://www.lryc.cn/news/45389.html

相关文章:

  • react 学习整理
  • 物理引擎系统-ode
  • 函数设计—参数规则
  • rsync远程同步
  • 中国大陆IP段(仅大陆地区)【2020-07-24】
  • 从零开始的嵌入式Linux生活(一) 背景介绍
  • 后缀为whl的文件是什么?如何安装whl文件?学习一下(22)
  • 整合Juit
  • C#,码海拾贝(11)——拉格朗日(Lagrange)三点式曲面插值算法,《C#数值计算算法编程》源代码升级改进版
  • CentOS7系统安装MySQL 5.7
  • 基于粒子群算法优化BP神经网络的高炉si预测,PSO-BP
  • STM32输出PWM波控制电机转速,红外循迹避障智能车+L298N的详细使用手册、接线方法及工作原理,有代码
  • 3、AI的道德性测试
  • 银行数字化转型导师坚鹏:银行业务需求分析师技能快速提升之道
  • C++IO流
  • 交友项目【后端环境搭建】
  • 大事务问题解决方案
  • python开启局域网传输
  • 病毒丨熊猫烧香病毒分析
  • SparkSQL学习——SparkSQL配置与文件的读取与保存
  • 随想录Day45--动态规划:70. 爬楼梯 (进阶), 322. 零钱兑换, 279.完全平方数
  • 原理+案例,关于主从延迟,一篇文章给你讲明白!
  • QT开发笔记(Camera)
  • 从C++的角度讲解C#容器
  • React组件库实践:React + Typescript + Less + Rollup + Storybook
  • c++ atomic
  • 要想孩子写作文没烦恼?建议家长这样做
  • 基于Python的高光谱图像分析教程
  • 【图神经网络】从0到1使用PyG手把手创建异构图
  • 2023美赛春季赛思路分析汇总