SpringBoot 配置文件

news2024/11/30 6:57:50

哈喽呀,你好呀,欢迎呀,快来看一下这篇宝藏博客吧~~~


1. 配置文件的作用

对于Spring Boot项目而言,所有重要的数据都是在配置文件中配置的,比如:

  • 项目的启动端口;
  • 数据库的连接信息(包含用户名和密码的设置);
  • 用于发现和定位问题的普通日志和异常日志等;
  • 第三方系统的调用秘钥等.

如果没有配置文件,那么SpringBoot项目就不能连接和操作数据库,也不能保存可以用于排查问题的关键日志,可见其配置文件的重要性.

那配置文件到底究竟是什么样的呢,哦们一起来看.

2.配置文件的格式

Spring Boot 配置文件主要分为以下两种:

  • .properties
  • .yml

对应到项目的目录里面就是;

要注意的是,application.properties是项目中自带默认的(下面那个application.yml是我自己建的), 并且他的优先级是最高的,比如你在这两个文件中都对端口号做了不一样的设置,则该项目会优先选择在application.properties中的配置的端口号.也就是说,.properties 配置⽂件的优先级最⾼,但加载完 .properties ⽂件之后,也会加载 .yml ⽂件的配置信息

虽然理论上来讲,.properties和.yml可以共存,但在实际的业务中,通常会采取一种统一的配置文件格式,这样可以降低故障率.图中application.properties这个配置文件是IDEA帮忙生成的,那在实际的开发中我们如果需要自己创建配置文件又该怎样创建呢?

我们都说SpringBoot一大特点就是约定大于配置.所以我们要按照它的规定来,当我们想要去创建配置文件时,应遵循以下命名规则:

application-xxx.properties 或 application-xxx.yml

说明:前面的"application-"是必须要这样写的,"xxx"可以任意写,但最好符合规范,最后是写.properties还是.yml取决于你或项目团队想要选用哪种格式的配置文件.你只有按照它的这个规则来才能被Spring扫描到.比如下图就是一个合格的自定义的配置文件:

那有人就要问了,为什么要创建这么多配置文件呢,维护起来不是更麻烦吗?要知道,一个项目工程的完成往往需要多个配置文件.因为往往在一个项目中,它的开发平台是有多个的,如果只用一个配置文件的话,在不同的平台时,我们就需要改成当前平台所适应的,每次都改来改去会很麻烦,而且还会增加出错率,比如,在不同的平台上,端口号,连接的数据库等都可能不同,如果不建立多个而是采用在一个配置文件中进行修改的话,那头真是太铁了~。所以我们就采用多平台的配置文件设置.这样在不同的平台,我们就可以指定选择不同的配置文件,就不需要改来改去了,一般最少会有以下三个:

  • 开发环境的配置文件  
  • 生产环境的配置文件
  • 测试环境的配置文件

那创建了这么多配置文件,Spring怎么知道我要用哪个配置文件呢,这是就需要我们在主配置文件application.yml中告诉Spring我们要用哪一个了.比如我现在要用生产环境的配置文件,则只需要在主配置文件 application.yml 中写:

2.1 properties 配置文件的基本语法

properties 配置文件时最早期的配置文件格式,也是创建Spring Boot项目默认的配置文件.

.properties 配置文件是以键值的形式配置的,key和value之间是以"="连接的,如:

 PS:配置文件中使用"#"来添加注释信息.

properties缺点分析:

从上述配置可以看出, .properties配置文件中会有很多冗余的信息,比如:

 前面都是一样的,但是却要写三次,这显然不太友好.而.yml 类型的配置文件就可以解决这个问题:

2.3 yml 配置文件的基本语法

yml是树形结构的配置文件,它的基础语法是"key: value",注意key和value之间要使用英文冒号加空格,注意,空格千万不能省略.如:

还有一种配置方式,当我们要配置的信息有多级时,需采用以下格式:

我们再来回顾一下properties是如何配置的:

 从中我们可以发现,用yml就可以省略相同的前缀.这也是yml的优点之一:写法简单简洁.

yml配置文件 优点:

yml 是一个可读性高,写法简单,易于理解,它的语法和JSON类似。

yml 支持更多的数据类型,它可以简单表达数组,散列表,标量等数据。它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件等。

yml 支持更多的编程语言,它不止在Java中可以使用,还可以在Golang、PHP、Python、Ruby、JavaScript、Perl中。

yml还可以配置不同的数据类型和null:

那配置好以上这些之后我们怎么用呢,接下来我们来看yml配置的读取吧~

2.4 读取配置文件信息

在项目中,如果需要主动读取配置文件中的某些内容,可以使用 @Value 注解来实现.

@Value 注解使用"${配置文件的键}"的格式读取,比如我现在要读取上述yml配置文件中string.value的值,代码如下(TestController):

 运行结果:

很显然,我们成功的读取到了指定的yml配置文件中的信息.

要记住,读取配置文件时,不管配置文件是.properties型还是.yml型的,都是按照以上这种方法来读取的,即:

@Value("${要读取的配置信息的键}")

当传入一个没有被配置过键值对时,程序会报错.

2.5 配置对象

我们还可以在yml中配置对象,如下:

 或者使用行内写法,(与上面的写法作用一致):

如果要读取这个对象的信息,就要用另外一个注解@ConfigurationProperties来读取了.具体实现如下:

 调用类的实现如下:

运行结果如下: 

 

 显然,我们成功的用 @ConfigurationProperties 注解读取到了student对象。

好啦,今天就到这啦,回顾一下,你还记得配置文件的作用吗,还记得如何在配置文件中配置我们需要的信息以及如何读取吗~~~

咱们下期见吧~拜拜~~~

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/87607.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第09讲:路由开发

一、使用脚手架创建vue路由项目 项目的创建步骤参考: 在预设中选择Router 这里输入n,表示不使用history模式 选择In dedicated config files表示将配置分开存放 项目已经创建完成,使用VSCode打开(部分win10 以上机型请用管理员…

[GO] 图书管理系统API

图书管理系统 1. 创建项目 2. 配置goproxy GOPROXYhttps://goproxy.cn 3. 添加格式化工具 4. 定义目录结构 |---- Readme.md //项目说明 |---- config // 配置文件(mysql配置,ip,端口,用户名,密码等) |---- controller // CLD服务入口,负责处理路由,参数校验,请求转发 |----…

缓存实现方式

为啥需要缓存? mysql关系型数据库,查询时需要磁盘IO,会消耗系统性能并且耗时,当数据变化量较小,并且响应要快的话,可以考虑使用缓存 服务端缓存方式有哪些? 服务端缓存方式: ①可以使…

git push/pull 超时问题解决

使用代理,发现git仓库浏览器可以访问到,但是本地 push/pull 时提示超时,这里提供一个方案供参考(亲测有效): 修改系统的DNS为:114.114.114.114

基于java SSM框架的校园二手交易平台设计

一、项目介绍 游客:浏览商品,登录、注册 用户:浏览商品,发布,评论商品,我的订单,收藏,修改个人信息,搜索,回复评论 管理员:商品分类管理&#xff…

基于MATLAB开发AUTOSAR软件应用层模块-part13.AUTOSAR Dictionary-3 编辑AUTOSAR元素-SWC 和PORTS

配置SWC 此处可以配置SWC的名字和类型,类型包含: Application 应用组件 ComplexDiviceDriver 复杂驱动组件 EcuAbstraction ECU 抽象组件 SensorActuator 传感器执行器组件

学会python可以做哪些兼职?

前言 以我差不多四年的 Python 使用经验来看,大概可以按以下这些路子来赚到钱,但编程技能其实只是当中必不可少的一部分,搭配其它技能栈食用风味更佳。 1、爬虫 很多人入门 Python 的必修课之一一定是 Web 开发和爬虫,但这两项…

如何使用Github+picGo搭建图床???

最开始我使用iPic微博图床匿名上传,但是!!!当我不小心上传了隐私文件后,删除特别麻烦(联系新浪客服,提供图片是自己上传的证据才给予处理),因为白嫖图床,总担心挂掉,而且不利于备份。…

独立性能环境的重要性

独立性能环境的重要性 有些同学担心,由于性能测试环境和线上环境配置不一致,会导致线下环境得到的性能结果无法发现足够多的性能问题,无法对线上环境的容量评估/稳定性保障带来足够的参考。其中担心的重点有如下几点: 配置不一致&…

47 岁从华为退休,操作系统老兵转战 OpenHarmony 生态 | 近匠

【CSDN 编者按】开源生态建设作为开源发展的关键,在国内仍缺乏足够的多的成功先例,开源操作系统生态到底该如何建设?本期《近匠》邀请到专注于 OpenHarmony 操作系统生态共建的杨启彬与我们分享他的实践经验。 本期受访嘉宾: 杨启…

软件测试工程师面试如何描述自动化测试是怎么实现的?

软件测试工程师面试的时候,但凡简历中有透露一点点自己会自动化测试的技能点的描述,都会被面试官问,那你结合你的测试项目说说自动化测试是怎么实现的?一到这里,很多网友,包括我的学生,也都一脸…

【车载开发系列】UDS诊断---OBD基础概述

【车载开发系列】UDS诊断—OBD基础概述 UDS诊断---OBD基础概述【车载开发系列】UDS诊断---OBD基础概述一.什么是OBD二.OBD和UDS的区别三.OBD应用功能与应用领域四.OBD的特点有哪些五.OBD的服务概述六.OBD服务中的DTC七.OBD服务中0x03和0x07的区别八.Pending DTC有什么用九.OBD的…

昇腾携手OpenMMLab,支持海量算法仓库的昇腾AI推理部署

摘要:近日,昇腾AI联合浦江实验室,正式实现OpenMMLab算法仓库在昇腾的异构计算架构CANN上的推理部署,目前相关代码已推入MMDeploy 0.10.0版本,并在GitHub正式发布。本文分享自华为云社区《昇腾携手OpenMMLab&#xff0c…

标准库 - Object

一、Object 对象&#xff0c;同时也是一个构造函数。 Object 对象提供了很多操作对象的属性和方法&#xff0c;也是对应的原型。 1.Objcet() 作为函数使用 可以把其他数据类型转为一个包装对象 <script> var a Object("a");// 传入字符串就可以包装为字符串…

面试必备:分库分表经典15连问

前言 大家好&#xff0c;我是田螺。我们去面试的时候&#xff0c;几乎都会被问到分库分表。田螺哥整理了分库分表的15道经典分库分表面试题&#xff0c;大家看完肯定会有帮助的。 公众号&#xff1a;捡田螺的小男孩github地址&#xff0c;感谢每颗star&#xff1a;github 1. 我…

Jmeter随机参数各种搭配

目录&#xff1a;导读 前言 一、两个固定值之间随机生成一个值&#xff0c;应用场景没有限制 二、接下来使用CSV文件按提前写好的值作为参数&#xff0c;执行场景需要提前根据实际情况配置好执行次数 三、在固定的多个值中&#xff0c;随机选取一个值作为参数&#xff0c;执…

Smconf(分布式配置管理框架)概述

Smconf 专注于分布式环境下的配置的统一管理。采用 JavaZookeeperMongodbSpring Boot 开发。目前只支持 Java&#xff0c;其他的使用语言需要通过调用 REST API 来实现。 每个技术人都有一个开源的梦想&#xff0c;那就是自己也能开发出一个让很多人使用的框架。其实分享使用不…

8个巧用iOS备忘录的方法,别浪费了几千块的iPhone手机

你用过ios系统的备忘录吗&#xff1f;是不是只用来记录生活的一些事项呢&#xff1f;如果是这样那就太浪费啦&#xff01;这里分享8个小技巧&#xff0c;快学一学让你的备忘录能物尽其用吧&#xff01;1.笔记-横线与网格大家是不是觉得备忘录的背景光秃秃的&#xff1f;其实是有…

antv/g6基本使用教程

安装 & 引用 在项目中引入 G6 有以下两种方式&#xff1a;npm 引入&#xff0c;CDN 引入。 1 在项目中使用 npm 包引入 Step 1: 使用命令行在项目目录下执行以下命令&#xff1a; npm install --save antv/g6 Step 2: 在需要用的 G6 的 JS 文件中导入&#xff1a; imp…

JSP ssh免疫疫苗管理系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计

一、源码特点 JSP ssh免疫疫苗管理系统是一套完善的web设计系统&#xff08;系统采用ssh框架进行设计开发&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S 模式开发。开发环境为TOMCAT7.0…