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

【JavaEE】Spring Boot配置文件

目录

  • 一、Spring Boot配置文件简介
  • 二、properties 配置⽂件说明
    • 2.1 properties 基本语法
    • 2.2 @value("${}")读取配置⽂件
  • 三、yml 配置文件说明
    • 3.1 yml 基本格式
    • 3.2 yml 配置数据类型 及 读取
    • 3.3 yml配置对象及读取@ConfigurationProperties(prefix = "")
    • 3.4 配置集合 及读取
    • 配置Map及读取

一、Spring Boot配置文件简介

配置⽂件主要是为了解决硬编码(代码写死)带来的问题, 把可能会发⽣改变的信息, 放在⼀个集中的地⽅, 当我们启动某个程序时, 应⽤程序从配置⽂件中读取数据, 并加载运⾏.

SpringBoot⽀持并定义了配置⽂件的格式, 也在另⼀个层⾯达到了规范其他框架集成到SpringBoot的⽬的.
很多项⽬或者框架的配置信息也放在配置⽂件中,⽐如:

  • 项⽬的启动端
  • 数据库的连接信息(包含⽤⼾名和密码的设置)
  • 第三⽅系统的调⽤密钥等信息
  • ⽤于发现和定位问题的普通⽇志和异常⽇志等.

Spring Boot 配置文件格式:

  • application.properties
  • application.yml
  • application.yaml

说明:

  • yml格式是yaml的简写模式。
  • properties和yml配置格式可以共存,两个配置取并集,当有冲突(对同一个配置都操作了),以properties为准(properties优先级更高)
  • SpringBoot配置文件的文件名默认必须是application,其它名需要自己设置,否则就算有后缀也不会当成是配置文件。

二、properties 配置⽂件说明

2.1 properties 基本语法

基本语法如下:

  • properties 是以键值的形式配置的,key 和 value 之间是以"="连接的;
  • key的每个单词之间建议使用 点 . 分隔开。

2.2 @value(“${}”)读取配置⽂件

主动的读取配置⽂件中的内容,可以使⽤@Value 注解来实现。@Value 注解使⽤" ${} "的格式读取,在大括号中写配置的key。

package com.example.springioc.controller;import jakarta.annotation.PostConstruct;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;@Controller
public class USController {@Value("${my.key}")private String myKey;@PostConstructpublic void init() {System.out.println("my.key = "+myKey);}}

注意事项:

  • 配置中设置key-value的时候,指不用考虑类型,在我们代码中拿到值的时候会转换成变量的类型。
  • 当然有些类型是不会转换成功的,例如当你在配置文件中写了一个字符串,使用int类型来接收就会出错。
  • 由于我们每个配置的可以都要写完全,就会导致properties 配置⽂件中会有很多的冗余的信息。my.key1=1 my.key2=1如上两个配置的my在properties格式下就不能合并。

三、yml 配置文件说明

3.1 yml 基本格式

基本格式如下:

  • 一级,key: valuekey之后的冒号与冒号之后的一个空格都不能省略;
  • 多级,key的每个单词占一行,并且在单词后面加冒号,且不能出现级数的单词相同不放在一起
  • 在同一个级别下面的单词要对准(建议与上一级隔两个空格),不对齐会将同级认为父子级

3.2 yml 配置数据类型 及 读取

对于数据类型只有两个需要特别注意,其它都是直接写

  • 一个波浪号代表nullnull: ~
  • 空字符串,不写或者使用空单引号empty: ''

对于配置的读取与上面的properties配置读取方法一样使用@value(“${}”),对于不同级别的单词使用点连接。例如上面的配置读取

@value("${spring.datasource.url}")

3.3 yml配置对象及读取@ConfigurationProperties(prefix = “”)

对于类对象的配置,直接用一个两级写法即可,外面单词就是类名,里面的单词就是属性。

person:name: zhangsanage: 18id: 111

对于配置的读取,我们使用注解@ConfigurationProperties(prefix = “”) 引号中写类名。

@Data
@ConfigurationProperties(prefix = "person")
@Configurationpublic class Person {private String name;private String id;private Integer age;private Integer age44;}

注意事项:

  • 注解去配置文件中拿属性的时候是根据属性名字对应的
  • 注解只会管类中的属性是否跟配置文件有对应,有就赋值,没有不会报错。

3.4 配置集合 及读取

只需要在上面的语法中,给key赋值value时每个value值用短斜杠加空格即可。例如下面的name就是一个集合。

person:name:- zhangsan- lisiage: 18id: 111

对于配置的读取,我们使用注解@ConfigurationProperties(prefix = “”) 引号中写类名,然后属性名对应即可。

package com.example.springioc.model;import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;import java.util.List;@Data
@ConfigurationProperties(prefix = "person")
@Configuration("person")public class Person {private List<String> name;private String id;private Integer age;private Integer age44;}

配置Map及读取

配置Map就跟基础语法中配置多级时的一样。

person:name:- zhangsan- lisiage: 18id:id1: 111id2: 222id3: 333

对于配置的读取,我们使用注解@ConfigurationProperties(prefix = “”) 引号中写类名,然后属性名对应即可。

package com.example.springioc.model;import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;import java.util.List;
import java.util.Map;@Data
@ConfigurationProperties(prefix = "person")
@Configuration("person")public class Person {private List<String> name;private Map<String,String> id;private Integer age;private Integer age44;}

相关文章:

【JavaEE】Spring Boot配置文件

目录 一、Spring Boot配置文件简介二、properties 配置⽂件说明2.1 properties 基本语法2.2 value("${}")读取配置⽂件 三、yml 配置文件说明3.1 yml 基本格式3.2 yml 配置数据类型 及 读取3.3 yml配置对象及读取ConfigurationProperties(prefix "")3.4 配…...

行为模式---策略模式

概念 策略模式是一种行为设计摸是&#xff0c;它的核心思想是将一些列的算法封装成独立的对象&#xff0c;并使它们可以相互替换&#xff0c;通过上下文进行调用。 策略模式通过算法抽象为独立的策略类&#xff0c;客户端可以根据自身需求选择不同的策略类来完成任务、这种方…...

Word 小黑第15套

对应大猫16 修改样式集 导航 -查找 第一章标题不显示 再选中文字 点击标题一 修改标题格式 格式 -段落 -换行和分页 勾选与下段同页 添加脚注 &#xff08;脚注默认位于底部 &#xff09;在脚注插入文档属性&#xff1a; -插入 -文档部件 -域 类别选择文档信息&#xff0c;域…...

OSPF:虚链路

一、虚链路概念 在OSPF中&#xff0c;虚链路&#xff08;Virtual Link&#xff09; 是一种逻辑连接&#xff0c;用于解决因网络设计或扩展导致的区域无法直接连接到骨干区域&#xff08;Area 0&#xff09;的问题。它是通过中间区域&#xff08;Transit Area&#xff09;在两个…...

Ubuntu 22.04 安装配置 FTP服务器 教程

今天搞定在 Ubuntu 22.04 系统上安装和配置 VSFTPD &#xff0c;还会涉及防火墙设置、SSL/TLS 设置&#xff0c;以及创建专门登录 FTP 服务器的账户。开始&#xff01; 一、安装 VSFTPD 首先&#xff0c;咱得让系统知道有啥新软件包可以安装。打开终端&#xff0c;输入下面这…...

基于 Selenium 的软件测试方法研究

一、引言 在软件开发的漫长征程中&#xff0c;软件测试宛如一座坚实的堡垒&#xff0c;守护着软件质量的大门。随着互联网技术的飞速发展&#xff0c;Web 应用程序如雨后春笋般涌现&#xff0c;其功能的复杂性和用户交互的多样性不断增加。在这样的背景下&#xff0c;传统的手动…...

网络安全事件响应--应急响应(windows)

应用系统日志 Windows主要有以下三类日志记录系统事件&#xff1a;应用程序日志、系统日志和安全日志。 系统和应用程序日志存储着故障排除信息&#xff0c;对于系统管理员更为有用。安全日志记录着事件审计信息&#xff0c;包括用户验证&#xff08;登录、远程访问等&#x…...

DataEase:一款国产开源数据可视化分析工具

DataEase 是由飞致云开发的一款基于 Web 的数据可视化 BI 工具&#xff0c;支持丰富的数据源连接&#xff0c;能够通过拖拉拽方式快速制作图表&#xff0c;帮助用户快速分析业务数据并洞察其趋势&#xff0c;为企业的业务改进与优化提供支持。 DataEase 的优势在于&#xff1a;…...

RTK与RTD基础原理

(文中的部分图片是摘自其他博主的文章&#xff0c;由于比较久&#xff0c;忘记原本链接了&#xff0c;侵删) GPS定位原理 卫星自身有自己的星历与原子钟&#xff0c;因此卫星知道自身准确的空间坐标与时间。因为每个卫星都有原子钟&#xff0c;因此每颗卫星的时间基本上都是相…...

关于MCP SSE 服务器的工作原理

模型上下文协议&#xff08;Model Context Protocol&#xff0c;简称MCP&#xff09; 是一种全新的开放协议&#xff0c;专门用于标准化地为大语言模型&#xff08;LLMs&#xff09;提供应用场景和数据背景。 你可以把MCP想象成AI领域的“USB-C接口”&#xff0c;它能让不同的A…...

碳中和小程序:助力用户记录低碳行为,推动环保生活

碳中和小程序:助力用户记录低碳行为,推动环保生活 一、碳中和的全民化挑战与数字化机遇 中国承诺2030年前实现碳达峰,2060年前达成碳中和目标。在这一国家战略下,个人碳减排贡献率需从当前不足5%提升至25%。小程序开发技术正成为破解"公众参与度低"“行为量化难…...

Python读取显示Latex的公式文档,Python加载显示markdown文件。

平时用LLM大语言模型去解释文献里面的公式含义直接复制的格式word看不懂&#xff0c;基于这个web可以正常加载显示。 下面是读取的效果展示&#xff1a;下面程序保存为stl_read.py然后运行下面指令。 streamlit run stl_read.pyimport streamlit as st import base64 import …...

mapbox高阶,结合threejs(threebox)添加extrusion挤出几何体,并添加侧面窗户贴图和楼顶贴图

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.2 ☘️mapboxgl.Map style属性1.3 ☘️threebox extrusion挤出几何体二、🍀…...

mock的定义和使用场景

Python自动化中使用mock的示例 在Python自动化测试中&#xff0c;mock 用于模拟对象、函数或方法的行为&#xff0c;以便在隔离的环境中测试代码。以下是一个简单的示例&#xff1a; 假设你有一个 user.py 模块&#xff0c;其中包含一个 get_user_info 函数&#xff0c;用于从…...

Android Retrofit 请求执行模块执行原理深入源码分析(三)

一、引言 Retrofit 是 Square 公司开发的一款优秀的类型安全的 HTTP 客户端&#xff0c;在 Android 和 Java 开发中被广泛使用。它通过简洁的接口定义和强大的注解功能&#xff0c;使得开发者能够轻松地进行网络请求。请求执行模块是 Retrofit 的核心部分之一&#xff0c;负责…...

封装Axios拦截器实现用户无感刷新AccessToken实践指南

一、背景与需求场景 1.1 单点登录体系中的Token管理 在单点登录&#xff08;SSO&#xff09;体系下&#xff0c;用户登录后系统会颁发两种令牌&#xff1a; AccessToken&#xff1a;短期有效&#xff08;2小时&#xff09;&#xff0c;用于接口鉴权 RefreshToken&#xff1a…...

CSDN博客:Markdown编辑语法教程总结教程(下)

❤个人主页&#xff1a;折枝寄北的博客 Markdown编辑语法教程总结 前言1. LaTex数学公式2. 插入不同类别的图2.1 插入甘特图2.2 插入UML图2.3 插入Mermaid流程图2.4 插入Flowchart流程图2.5 插入classDiagram类图 3. CSDN快捷键4. 字体相关设置4.1 字体样式改变4.2 字体大小改变…...

【Python】06、流程控制语句

文章目录 1.条件判断语句1.1 if 语句2. input 函数3.if-else 语句4.if-elif-else 语句 2.循环语句2.1 while语句2.2 while语句练习&#xff1a;2.3 循环嵌套2.4 break和continue 通过流程控制语句&#xff0c;可以改变程序的执行顺序&#xff0c;也可以让指定程序反复执行多次。…...

《python》—— threading库(线程和多线程)

文章目录 threading简介threading基本概念常用类和方法线程同步线程池实例 threading简介 threading 是 Python 标准库中用于实现多线程编程的模块。多线程编程允许程序同时执行多个任务&#xff0c;提高程序的并发性能&#xff0c;尤其适用于 I/O 密集型任务&#xff0c;例如…...

【数据分享】2000-2024年全国逐年归一化植被指数(NDVI)栅格数据(年最大值)

NDVI&#xff0c;全名为Normalized Difference Vegetation Index&#xff0c;中文名称为归一化植被指数。这个指数可以用来定性和定量评价植被覆盖及其生长活力&#xff0c;我们也可以简单地将它理解为体现植被密度和健康状况的一个指标。 之前我们给大家分享了来源于MOD13A3数…...

【项目】负载均衡式在线OJ

负载均衡式在线OJ 目录 负载均衡式在线OJ 1.项目介绍&#xff1a; 2.comm 2.1 log.hpp 日志等级 开放式日志 时间戳工具 2.2 util.hpp TimeUtil类 PathUtil类 FileUtil类 StringUtil类 3.Compile_server 3.1compile_run.hpp RemoveTempFile CodeToDesc Start 3.…...

前端发布缓存导致白屏解决方案

解决发布H5后因为本地缓存白屏方案 一、 核心配置优化&#xff08;前提是访问网站的请求能抵达服务器&#xff09; 方案一&#xff1a;前端项目设置全局不缓存方案 运行逻辑&#xff1a;在H5服务器配置中增加Cache-Control: no-cache或max-age0响应头&#xff0c;禁用静态资…...

大模型开源的工具包有哪些特殊符号可以使用;SEP 是什么

大模型开源的工具包有哪些特殊符号可以使用 目录 大模型开源的工具包有哪些特殊符号可以使用自定义特殊token:special_tokens=True一、**对话轮次分隔符(必选)**二、**系统提示标记(提升指令理解)**三、**中文特色分隔符(贴合书写习惯)**四、**开源模型专属符号(按文档…...

混沌理论与混沌映射——算法改进初始化创新点之一

混沌理论与混沌映射 混沌理论研究混沌系统的动力学&#xff0c;其特征是非线性和对初始条件的极端敏感性。即使在这些条件下的微小变化也可能导致系统结果的显著变化。尽管看起来是随机的&#xff0c;混沌系统可以在不依赖随机性的情况下表现出不规则的行为&#xff0c;因为确…...

19874并查集

19874并查集 ⭐️难度&#xff1a;中等 &#x1f31f;考点&#xff1a;并查集、数据结构 &#x1f4d6; &#x1f4da; import java.util.*;public class Main {static int N 100010;static int[] a new int[N];static int[] p new int[N];static int n;static int m;st…...

macOS 安装配置 iTerm2 记录

都说 macOS 里替换终端最好的就是 iTerm2 &#xff0c;这玩意儿还是开源的&#xff0c;所以就也根风学习一下&#xff0c;但全是英文的挺麻烦&#xff0c;所以这里记录一下自己的设置&#xff0c;以最简单的安装及设置为主&#xff0c;想要更酷炫、更好看的还请自己百度吧&…...

LLM最新的模型微调技术有哪些

LLM 最新的模型微调技术有哪些 目录 LLM 最新的模型微调技术有哪些1. QLoRA(Quantized Low-Rank Adaptation)2. P-Tuning v23. LoRA++(增强版 LoRA)4. AdaLoRA(Adaptive LoRA)5. BitFit(仅微调偏置)1. QLoRA(Quantized Low-Rank Adaptation) 原理:QLoRA 结合了低秩自…...

Jmeter下载安装配置及使用

1、下载 官网地址&#xff1a;Apache JMeter - Download Apache JMeter 2、配置环境变量 ①找到环境变量&#xff0c;两种方法 法一&#xff1a;我的电脑→右键菜单→属性→高级系统设置→环境变量 法二&#xff1a;直接搜索环境变量 ②新建两个系统变量 1.变量名&#x…...

简单易懂Modbus Tcp和Rtu的异同点

关键说明 无需修改业务逻辑&#xff1a;同一套读写代码可同时支持TCP和RTU&#xff0c;仅需调整底层通信接口。 工具兼容性&#xff1a;调试工具&#xff08;如Modbus Poll&#xff09;可同时解析两种协议&#xff0c;仅需切换传输模式。 系统集成优势&#xff1a;混合网络下可…...

try catch的使用

try catch的使用 在 Java 中&#xff0c;try-catch 语句用于异常处理。异常处理可以帮助我们在程序出现错误时&#xff0c;不会导致程序崩溃&#xff0c;而是采取一定的措施来处理错误。try-catch 语句是用于捕获并处理异常的机制。 基本语法 try {// 可能会抛出异常的代码块…...