【Java】Spring Boot 配置文件

news2024/9/30 7:26:28

文章目录

  • SpringBoot 配置文件
    • 1. 配置文件的作用
    • 2. 配置文件的格式
    • 3. properties配置文件说明
      • 3.1 properties基本语法
      • 3.2 读取配置文件
      • 3.3 properties缺点分析
    • 4. yml配置文件说明
      • 4.1 yml基本语法
      • 4.2 yml使用进阶
        • 4.2.1 yml配置不同的数据类型及null
        • 4.2.1 yml配置的读取
        • 4.2.2 配置对象
        • 4.2.3 配置集合
    • 5. properties VS yml

SpringBoot 配置文件

1. 配置文件的作用

整个项目当中,所有重要的数据都是在配置文件当中配置的,比如:

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

想象一下如果没有配置信息,那么SpringBoot项目不能连接数据库和操作数据库,甚至不能保存可以用于排查问题的关键日志,所以配置文件是非常重要的

2. 配置文件的格式

SpringBoot配置文件主要有以下两种格式:

  • .properties
  • .yml

特殊说明:

  1. 理论上讲 properties 可以和 yml ⼀起存在于⼀个项⽬当中,当 properties 和 yml ⼀起存在⼀个项 ⽬中时,如果配置⽂件中出现了同样的配置,⽐如 properties 和 yml 中都配置了“server.port”, 那么这个时候会以 properties 中的配置为主,也就是 .properties 配置⽂件的优先级最⾼,但加载 完 .properties ⽂件之后,也会加载 .yml ⽂件的配置信息。
  2. 虽然理论上来讲 .properties 可以和 .yml 共存,但实际的业务当中,我们通常会采取⼀种统⼀的配 置⽂件格式,这样可以更好的维护(降低故障率)。这就好像连锁店的服饰⼀样,不管是⽼款的服 装还是新款的服装,⼀定要统⼀了才好看。

3. properties配置文件说明

3.1 properties基本语法

properties是以键值的形式配置的,key 和 value 之间是用=连接的

server.port=8080
spring.datasource.url=Jdbc:mysql://127.0.0.1:3306/zy?characterEncoding=utf8&&useSSL=false
spring.datasource.name=root
spring.datasource.password=123456

配置文件当中使用# 来添加注释信息

3.2 读取配置文件

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

@Value注解使用“${}"的格式来读取image-20230215162920436

3.3 properties缺点分析

配置文件当中会有很多冗余的信息。

4. yml配置文件说明

yml优点

  • 可读性高, 写法简单,易于理解,它的语法和JSON类似
  • 支持更多的数据类型,它可以简单的表达清单、散列表、标量等数据形态。它使用空白符号缩进和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种配置文件
  • 支持更多的编程语言

4.1 yml基本语法

它的基础语法是key: value注意:key和value之间使用英文冒号加空格的方式组成,其中的空格不可以省略

spring:
  datasource:
    url: jdbc
    name: root
    password: 123456

4.2 yml使用进阶

4.2.1 yml配置不同的数据类型及null

string.value: Hello
boolean.value: true

int.value: 13

null.value: ~

4.2.1 yml配置的读取

yml配置读取方法和properties相同,使用@Value注解就可以

yml当中的字符串默认不用加上单引号或者双引号

  • 单引号会转义特殊字符,特殊字符最终只是一个普通的字符串数据
  • 双引号不会转义字符串里面的特殊字符:特殊字符会作为本身想要表示的意思

4.2.2 配置对象

student:
  id: 1
  name: java
  age: 18


student2: {id: 2, name: java, age: 18}

两种配置文件的方法。

想要读取要使用一个新的注解。

@Data
@ConfigurationProperties(prefix = "student")
@Component
public class Student {
    private int id;
    private String name;
    private int age;
}

@Data注解包含了类对象的各种方法,如get和set

4.2.3 配置集合

dptypes:
  name:
    - mysql
    - sqlservice
    - db2

dptypes2: {name: [mysql, sqlservice, db2]}

集合的读取和对象也是一样的

5. properties VS yml

  • properties是以key=value 的形式配置的键值类型的配置文件,而yml使用的是类似JSON格式的树形配置方式进行配置的,yml层级之间使用换行缩进凡是进行配置,key和value之间使用英文冒号加空格的方式设置,并且空格不可以省略
  • properties为早期并且默认的配置文件的格式,但其配置存在一定的冗余数据,使用yml可以很好的解决冗余问题
  • yml通用性好,支持更多的语言
  • yml支持更多的数据类型

设置不同环境的配置文件:

  1. 创建不同环境的配置文件
  • application-dev.yml
  • application-prod.yml
  1. 在application.yml 中设置运行环境

spring.profiles.active=dev

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

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

相关文章

Python蓝桥杯训练:基本数据结构 [哈希表]

Python蓝桥杯训练:基本数据结构 [哈希表] 文章目录Python蓝桥杯训练:基本数据结构 [哈希表]一、哈希表理论基础知识1、开放寻址法2、链式法二、有关哈希表的一些常见操作三、力扣上面一些有关哈希表的题目练习1、[有效的字母异位词](https://leetcode.cn…

0101基础概念-图-数据结构和算法(Java)

文章目录1 图1.1 定义1.2 4种图模型2 无向图2.1 定义2.2 术语后记1 图 1.1 定义 图是一种非线性的数据结构,表示多对多的关系。 图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V, E)&#xf…

ecology9-谷歌浏览器下-pdf.js在渲染时部分发票丢失文字 问题定位及解决

问题 问题描述 : 在谷歌浏览器下,pdf.js在渲染时部分发票丢失文字;360浏览器兼容模式不存在此问题 排查思路:1、对比谷歌浏览器的css样式和360浏览器兼容模式下的样式,没有发现关键差别 2、✔使用Fiddler修改网页js D…

什么是线程死锁?如何解决死锁问题

死锁,一组互相竞争的资源的线程之间相互等待,导致永久阻塞的现象。 如下图所示: 与死锁对应的,还有活锁,是指线程没有出现阻塞,但是无限循环。 有一个经典的银行转账例子如下: 我们有个账户类…

操作系统权限提升(十四)之绕过UAC提权-基于白名单AutoElevate绕过UAC提权

系列文章 操作系统权限提升(十二)之绕过UAC提权-Windows UAC概述 操作系统权限提升(十三)之绕过UAC提权-MSF和CS绕过UAC提权 注:阅读本编文章前,请先阅读系列文章,以免造成看不懂的情况!! 基于白名单AutoElevate绕过…

2-MATLAB APP Design-下拉菜单栏的使用

一、APP 界面设计展示 1.新建一个空白的APP,在此次的学习中,我们会用到编辑字段(文本框)、下拉菜单栏、坐标区,首先在界面中拖入一个编辑字段(文本框),在文本框中输入内容:下拉菜单栏的使用,调整背景颜色,字体的颜色为黑色,字体的大小调为26. 2.在左侧组件库常用栏…

Qt音视频开发17-vlc内核回调拿图片进行绘制

一、前言 在众多播放器中,支持的种类格式众多,并支持DVD影音光盘,VCD影音光盘及各类流式协议,提供了sdk进行开发,这点是至关重要的,尽管很多优秀的播放器很牛逼,由于没有提供sdk第三方开发&…

【网络编程套接字(一)】

网络编程套接字(一)理解源IP地址和目的IP地址理解源MAC地址和目的MAC地址理解源端口号和目的端口号PORT VS PID认识TCP协议和UDP协议网络字节序socket编程接口socket常见APIsockaddr结构简单的UDP网络程序服务端创建套接字服务端绑定字符串IP VS 整数IP客…

面试官: 你知道 JWT、JWE、JWS 、JWK嘛?

想起了 之前做过的 很多 登录授权 的项目 它相比原先的session、cookie来说,更快更安全,跨域也不再是问题,更关键的是更加优雅 ,所以今天总结了一篇文章来介绍他 JWT 指JSON Web Token,如果在项目中通过 jjwt 来支持 J…

Springboot整合 Thymeleaf增删改查一篇就够了

很早之前写过Thymeleaf的文章,所以重新温习一下,非前后端分离,仅仅只是学习 官网: https://www.thymeleaf.org/ SpringBoot可以快速生成Spring应用,简化配置,自动装配,开箱即用。 JavaConfigur…

【java基础】枚举类(enum)

文章目录基本介绍快速使用字段、方法、构造器枚举类方法toString方法valueOf方法values方法ordinal方法基本介绍 在java中有一种特殊的类型就是枚举类,对于一个有限的有固定值的集合,我们就可以考虑使用枚举类来进行表示,例如服装的大小为 小…

linux shell 入门学习笔记15 shell 条件测试

概念 shell的条件测试目的是得出真和假。 shell 提供的条件测试语法 test 命令 [] 中括号命令 语法*: test条件测试 test命令用来评估一个表达式,他的结果是真,还是假,如果条件为真,那么命令执行状态结果就为0&…

【蓝桥杯集训·周赛】AcWing 第92场周赛

文章目录第一题 AcWing 4864. 多边形一、题目1、原题链接2、题目描述二、解题报告1、思路分析2、时间复杂度3、代码详解第二题 AcWing 4865. 有效类型一、题目1、原题链接2、题目描述二、解题报告1、思路分析2、时间复杂度3、代码详解第三题 AcWing 4866. 最大数量一、题目1、原…

Spring之丐版IOC实现

文章目录IOC控制反转依赖注入Bean的自动装配方式丐版IOC实现BeanDefinition.javaResourceLoader.javaBeanRegister.javaBean和DI的注解BeanFactory.javaApplicationContext测试,实现在这里插入图片描述大家好,我是Leo。Spring核心中依赖注入和IOC容器是非…

JWT令牌

1.普通令牌的问题 客户端申请到令牌,接下来客户端携带令牌去访问资源,到资源服务器将会校验令牌的合法性。 从第4步开始说明: 1、客户端携带令牌访问资源服务获取资源。 2、资源服务远程请求认证服务校验令牌的合法性 3、如果令牌合…

QML Image and Text(图像和文字)

Image(图片) 图像类型显示图像。 格式: Image {source: "资源地址" } source:指定资源的地址 自动检测文件拓展名:source中的URL 指示不存在的本地文件或资源,则 Image 元素会尝试自动检测文件…

MVI 架构更佳实践:支持 LiveData 属性监听

前言MVI架构为了解决MVVM在逻辑复杂时需要写多个LiveData(可变不可变)的问题,使用ViewState对State集中管理,只需要订阅一个 ViewState 便可获取页面的所有状态通过集中管理ViewState,只需对外暴露一个LiveData,解决了MVVM模式下LiveData膨胀…

Linux_vim编辑器入门级详细教程

前言(1)vim编辑器其实本质上就是对文本进行编辑,比如在.c文件中改写程序,在.txt文件写笔记什么的。一般来说,我们可以在windows上对文本进行编译,然后上传给Linux。但是有时候我们可能只是对文本进行简单的…

MySQL运维

目录 1、日志 1、错误日志 2、二进制日志 3、查询日志 4、慢查询日志 2、主从复制 搭建 1、主库配置 2、从库配置 3、分库分表 1、简介 ​编辑 1、垂直拆分 2、水平拆分 3、实现技术 2、MyCat 3、MyCat使用和配置 配置 4、MyCat分片 1、垂直拆分 2、水平拆分…

线材-电子线载流能力

今天来讲的是关于电子线的一个小知识,可能只做板子的工程师遇到此方面的问题会比较少,做整机的工程师则必然会遇到此方面问题,那就是线材问题。 下面主要说下电子线的过电流能力。(文末有工具下载)电子线(h…