【后端开发】Spring配置文件

news2025/4/18 2:25:48

文章目录

  • 配置文件
  • properties配置文件
    • 基本语法
    • 读取配置文件
  • yml配置文件
    • 基本语法
    • 读取配置文件
      • 配置空字符串及null
      • 单双引号
      • 配置对象
      • 配置集合
      • 配置Map
    • 优缺点
      • 优点
      • 缺点

配置文件

  • 硬编码是将数据直接嵌入到程序或其他可执行对象的源代码中,也就是常说的"代码写死"。
  • 配置文件主要是为了解决硬编码带来的问题,把可能会发生改变的信息,放在一个集中的地方,当启动程序时,应用程序从配置文件中读取数据,并加载运行。
  • 使用配置文件,可以使程序完成用户和应用程序的交互,或者应用程序与其他应用程序的交互
    SpringBoot支持并定义了配置文件的格式,Spring Boot 配置文件有以下三种:

1.application.properties
2.application.yml
3.application.yaml

  • 理论上讲 .properties 和 .yml 可以并存在于⼀个项⽬中,当 .properties 和 .yml 并存时,两个配置都会加载,如果配置⽂件内容有冲突,则以 .properties 为主, 也就是 .properties 优先级更⾼。
  • 虽然理论上来讲 .properties 可以和 .yml 共存,但实际的业务当中,通常会采取⼀种统⼀的配置文件格式,这样可以更好的维护(降低故障率)。

properties配置文件

properties 配置文件是最早期的配置文件格式,也是创建 SpringBoot 项目默认的配置文件。

基本语法

properties 是以键值的形式配置的,key 和 value 之间是以"="连接的。
示例:
设置服务器端口号为9090,默认为8080。

# 配置项⽬端⼝号
Server.port=9090

配置连接数据库信息。

#配置数据库连接信息
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
  • 缺陷:properties 配置文件中会有很多的冗余的信息。

读取配置文件

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

@Value 注解搭配使用" ${}"的格式读取

配置文件设置变量。

library.page.num=10

读取配置文件的变量。

@Repository
public class BookDao {
    @Value("${library.page.num}")
    private int num;
}

yml配置文件

yml 为yaml的简写,实际开发中出现频率最高,yaml 和ylm 的使用方式一样。

基本语法

yml 是树形结构的配置文件,它的基础语法是"key: value",key 和 value 之间使用英文冒号加空格的方式组成,空格不可省略。

# 配置项⽬端⼝号
server:
  port: 9090

配置连接数据库信息。

#配置数据库连接信息
spring:
  datasource:
  url: jdbc:mysql://127.0.0.0:3306/dbname?characterEncoding=utf8&useSSL=false
  username: root
  password: 123456

读取配置文件

yml读取配置的方式和 properties 完全相同

配置空字符串及null

# Null,~代表null
null.value: ~
 
# "" 空字符串
#:直接后⾯什么都不加就可以了, 但这种⽅式不直观, 更多的表⽰是使⽤引号括起来
empty.value: ''

单双引号

string:
  str1: Hello \n Spring Boot.
  str2: 'Hello \n Spring Boot.'
  str3: "Hello \n Spring Boot"

字符串默认不用加上单引号或者双引号
单引号会转义特殊字符,使其失去特殊功能,始终是一个普通的字符串----特殊字符没用了,比如“\n”
双引号不会转义字符串里面的特殊字符,特殊字符会表示本身的含义----特殊字符有用,比如“\n”

配置对象

示例:

student:
  id: 1
  name: zhangsan
  age: 19

接收该对象时,需要搭配 @ConfigurationProperties 注解来读取。

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

配置集合

list:
  name:
    - aa
    - bb
    - cc

集合的读取和对象一样,使用 @ConfigurationProperties 来读取。

@Component
@ConfigurationProperties("list")
@Data
public class ListConfig {
    private List<String> name;
}

配置Map

mapList:
  map:
    k1: v1
    k2: v2
    k3: v3

集合的读取和对象一样,使用 @ConfigurationProperties 来读取。

@Data
@Component
@ConfigurationProperties("mapList")
public class MapConfig {
    private Map<String, String> map;
}

优缺点

优点

  • 可读性高,写法简单, 易于理解
  • 支持更多的数据类型,可以简单表达对象,数组,List,Map等数据形态
  • 支持更多的编程语言,不止是java中可以使用,在Golang,Python,Ruby,JavaScript中也可以使用

缺点

  • 不适合写复杂的配置⽂件
  • 对格式有较强的要求(空格规范)

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

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

相关文章

七种驱动器综合对比——《器件手册--驱动器》

九、驱动器 名称 功能与作用 工作原理 优势 应用 隔离式栅极驱动器 隔离式栅极驱动器用于控制功率晶体管&#xff08;如MOSFET、IGBT、SiC或GaN等&#xff09;的开关&#xff0c;其核心功能是将控制信号从低压侧传输到高压侧的功率器件栅极&#xff0c;同时在输入和输出之…

redis系列--1.redis是什么

国际惯例&#xff0c;想了解一个东西&#xff0c;首先就要看看官方提供了什么。redis的官网是https://redis.io 。以下这段话就是redis的简介了&#xff1a; Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache, and message…

CSS 过渡与变形:让交互更丝滑

在网页设计中&#xff0c;动效能让用户交互更自然、流畅&#xff0c;提升使用体验。本文将通过 CSS 的 transition&#xff08;过渡&#xff09;和 transform&#xff08;变形&#xff09;属性&#xff0c;带你入门基础动效设计&#xff0c;结合案例演示如何实现颜色渐变、元素…

MecAgent Copilot:机械设计师的AI助手,开启“氛围建模”新时代

MecAgent Copilot作为机械设计师的AI助手,正通过多项核心技术推动机械设计进入“氛围建模”新时代。以下从功能特性、技术支撑和应用场景三方面解析其创新价值: 一、核心功能特性 ​​智能草图生成与参数化建模​​ 支持自然语言输入生成设计草图和3D模型,如输入“剖面透视…

【prometheus+Grafana篇】Prometheus与Grafana:深入了解监控架构与数据可视化分析平台

&#x1f4ab;《博主主页》&#xff1a;奈斯DB-CSDN博客 &#x1f525;《擅长领域》&#xff1a;擅长阿里云AnalyticDB for MySQL(分布式数据仓库)、Oracle、MySQL、Linux、prometheus监控&#xff1b;并对SQLserver、NoSQL(MongoDB)有了解 &#x1f496;如果觉得文章对你有所帮…

【后端开发】初识Spring IoC与SpringDI、图书管理系统

文章目录 图书管理系统用户登录需求分析接口定义前端页面代码服务器代码 图书列表展示需求分析接口定义前端页面部分代码服务器代码Controller层service层Dao层modle层 Spring IoC定义传统程序开发解决方案IoC优势 Spring DIIoC &DI使用主要注解 Spring IoC详解bean的存储五…

git在IDEA中使用技巧

git在IDEA中使用技巧 merge和rebase 参考&#xff1a;IDEA小技巧-Git的使用 git回滚、强推、代码找回 参考&#xff1a;https://www.bilibili.com/video/BV1Wa411a7Ek?spm_id_from333.788.videopod.sections&vd_source2f73252e51731cad48853e9c70337d8e cherry pick …

榕壹云无人共享系统:基于SpringBoot+MySQL+UniApp的物联网共享解决方案

无人共享经济下的技术革新 随着无人值守经济模式的快速发展&#xff0c;传统共享设备面临管理成本高、效率低下等问题。榕壹云无人共享系统依托SpringBootMySQLUniApp技术栈&#xff0c;结合物联网与移动互联网技术&#xff0c;为商家提供低成本、高可用的无人化运营解决方案。…

ARCGIS PRO DSK 利用两期地表DEM数据计算工程土方量

利用两期地表DEM数据计算工程土方量需要准许以下数据&#xff1a; 当前地图有3个图层&#xff0c;两个栅格图层和一个矢量图层 两个栅格图层&#xff1a;beforeDem为工程施工前的地表DEM模型 afterDem为工程施工后的地表DEM模型 一个矢量图层&#xf…

考研408参考用书:计算机组成原理(唐朔飞)介绍,附pdf

我用夸克网盘分享了「《计算机组成原理》第2,3版 唐朔飞」&#xff0c; 链接&#xff1a;https://pan.quark.cn/s/6a87d10274a3 1. 书籍定位与适用对象 定位&#xff1a;计算机组成原理是计算机科学与技术、软件工程等专业的核心基础课程&#xff0c;涉及计算机硬件的底层工作原…

国网B接口云镜控制接口流程详解以及检索失败原因(电网B接口)

文章目录 一、B接口协议云镜控制接口介绍B.8.1 接口描述B.8.2 接口流程B.8.3 接口参数B.8.3.1 SIP头字段B.8.3.2 SIP响应码B.8.3.3 XML Schema参数定义 B.8.4 消息示例B.8.4.1 云镜控制请求B.8.4.2 云镜控制请求响应 二、B接口云镜控制失败常见问题&#xff08;一&#xff09;网…

vue3使用keep-alive缓存组件与踩坑日记

目录 一.了解一下KeepAlive 二.使用keep-alive标签缓存组件 1.声明Home页面名称 三.在路由出口使用keep-alive标签 四.踩坑点1&#xff1a;可能需要配置路由&#xff08;第三点完成后有效可忽略&#xff09; 五.踩坑点2&#xff1a;没有找到正确的路由出口 一.了解一下Kee…

gpt2 本地调用调用及其调用配置说明

gpt2 本地调用调用及其调用配置说明 环境依赖安装&#xff0c;模型下载 在大模型应用开发中&#xff0c;需要学会本地调用模型&#xff0c; 要在本地环境调用gpt2 模型需要将模型下载到本地&#xff0c;这里记录本地调用流程&#xff1a; 在huggingface 模型库中查找到需要使…

【Abstract Thought】【Design Patterns】python实现所有个设计模式【下】

前言 彼岸花开一千年&#xff0c;花开花落不相见。 若问花开叶落故&#xff0c;彼岸缘起缘又灭——《我欲封天》 \;\\\;\\\; 目录 前言简单的设计模式复杂的设计模式13责任链14迭代器15备忘录16状态机17模板方法18访问者19观察者20命令Shell21策略22调解23解释器 简单的设计模…

【物联网】PWM控制蜂鸣器

文章目录 一、PWM介绍1.PWM的频率2.PWM的周期 二、PWM工作原理分析三、I.MX6ull PWM介绍1.时钟信号2.工作原理3.FIFO 四、PWM重点寄存器介绍1.PWM Control Register (PWMx_PWMCR)2.PWM Counter Register (PWMx_PWMCNR)3.PWM Period Register (PWMx_PWMPR)4.PWM Sample Register…

Python----机器学习(基于PyTorch的乳腺癌逻辑回归)

Logistic Regression&#xff08;逻辑回归&#xff09;是一种用于处理二分类问题的统计学习方法。它基于线性回归 模型&#xff0c;通过Sigmoid函数将输出映射到[0, 1]范围内&#xff0c;表示概率。逻辑回归常被用于预测某个实 例属于正类别的概率。 一、数据集介绍 在本例中&…

5分钟学会接口自动化测试框架

今天&#xff0c;我们来聊聊接口自动化测试。 接口自动化测试是什么&#xff1f;如何开始&#xff1f;接口自动化测试框架如何搭建&#xff1f; 自动化测试 自动化测试&#xff0c;这几年行业内的热词&#xff0c;也是测试人员进阶的必备技能&#xff0c;更是软件测试未来发…

基于FreeRTOS和LVGL的多功能低功耗智能手表(APP篇)

目录 一、简介 二、软件框架 2.1 MDK工程架构 2.2 CubeMX框架 2.3 板载驱动BSP 1、LCD驱动 2、各个I2C传感器驱动 3、硬件看门狗驱动 4、按键驱动 5、KT6328蓝牙驱动 2.4 管理函数 2.4.1 StrCalculate.c 计算器管理函数 2.4.2 硬件访问机制-HWDataAccess 2.4.3 …

布局决定终局:基于开源AI大模型、AI智能名片与S2B2C商城小程序的战略反推思维

摘要&#xff1a;在商业竞争日益激烈的当下&#xff0c;布局与终局预判成为企业成功的关键要素。本文探讨了布局与终局预判的智慧性&#xff0c;强调其虽无法做到百分之百准确&#xff0c;但能显著提升思考能力。终局思维作为重要战略工具&#xff0c;并非一步到位的战略部署&a…

告别循环!用Stream优雅处理集合

什么是stream&#xff1f; 也叫Stream流&#xff0c;是jdk8新增的一套API&#xff08;java.util.stream.*&#xff09;可以用于操作集合或者数组的数据。 优势&#xff1a;Stream流大量的结合了Lambda语法的风格编程&#xff0c;提供了一种更加强大&#xff0c;更加简单的方式…