【JavaEE】Spring Boot配置文件

news2025/3/13 8:57:36

目录

  • 一、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;

    @PostConstruct
    public 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: zhangsan
  age: 18
  id: 111

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

@Data
@ConfigurationProperties(prefix = "person")
@Configuration

public class Person {
    private String name;
    private String id;
    private Integer age;

    private Integer age44;

}

注意事项:

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

3.4 配置集合 及读取

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

person:
  name:
    - zhangsan
    - lisi
  age: 18
  id: 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
    - lisi
  age: 18
  id:
    id1: 111
    id2: 222
    id3: 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;

}

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

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

相关文章

行为模式---策略模式

概念 策略模式是一种行为设计摸是&#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;在两个…

网络安全事件响应--应急响应(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;因此每颗卫星的时间基本上都是相…

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;用于从…

封装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数…

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

混沌理论与混沌映射 混沌理论研究混沌系统的动力学&#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…

Jmeter下载安装配置及使用

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

【从零开始学习计算机科学】编译原理(一)编译过程概述

【从零开始学习计算机科学】编译原理(一)编译过程概述 绪论编译过程概述词法分析语法分析代码优化代码生成其他功能编译器的前端和后端绪论 什么叫编译程序?为什么我们需要编译程序?编译程序就是一个程序,将便于人编写、阅读、维护的高级计算机语言所写作的源代码程序,翻…

【算法day8】 Z 字形变换 -O(n)算法思路整理

Z 字形变换&#xff0c;算法思路整理 https://leetcode.cn/problems/zigzag-conversion/description/ 将一个给定字符串 s 根据给定的行数 numRows &#xff0c;以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 “PAYPALISHIRING” 行数为 3 时&#xff0c;排列如下…

L3-1 夺宝大赛

输入样例 1&#xff1a; 5 7 1 1 1 1 1 0 1 1 1 1 1 1 0 0 1 1 0 2 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 7 1 5 7 1 1 1 5 5 3 1 3 5 1 4输出样例 1&#xff1a; 7 6样例 1 说明&#xff1a; 七支队伍到达大本营的时间顺次为&#xff1a;7、不可能、5、3、3、5、6&#xff0c…