SpringBoot-配置文件

properties

properties配置文件是一种常见的配置文件格式,它遵循Java属性文件的规范。这种文件通常用于存储配置信息,如数据库连接信息、服务器地址等。properties文件以键值对的形式存储数据,每行一个属性,键和值之间用等号(=)分隔,行尾可以包含注释,注释以井号(#)或感叹号(!)开头。

基本语法:

  1. 键值对:每行一个属性,键和值之间用等号(=)分隔。
  2. 注释:以#!开头的行被视为注释,会被忽略。
  3. 空格:键或值前后的空格会被忽略。
  4. 特殊字符:如果值中包含特殊字符(如空格、等号等),需要使用反斜杠(\)进行转义。
  5. 编码:通常使用ISO 8859-1编码,也可以使用Unicode字符。

例如:配置数据库

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8&useSSL=false
spring.datasource.username=root
spring.datasource.password=root

获取properties配置文件中的值

例如配置文件中的内容为:

spring.application.name=SpringConfigs
my.key=test
my.key2=5
my.key3=true

使用@Value注解

@RestController
@RequestMapping("/test")
public class ConfController {@Value("${my.key}")private String myKey;@Value("${my.key2}")private Integer myKey2;@Value("${my.key3}")private Boolean myKey3;@RequestMapping("/read")public String readValue1() {return "从配置文件中读取信息" + myKey;}@PostConstructpublic void readValue2() {System.out.println("从配置文件中读取配置信息" + myKey);}@PostConstructpublic void readValue3() {System.out.println("从配置文件中读取配置信息" + myKey2);}@PostConstructpublic void readValue4() {System.out.println("从配置文件中读取配置信息" + myKey3);}}

@PostConstruct 注解:它属于Java EE 5的规范,被用来标记在初始化方法上。这个注解的方法会在依赖注入完成后,构造函数执行完毕后被自动调用。它通常用于执行一些初始化操作,比如打开数据库连接、初始化一些资源等。

yml/yaml

YAML(YAML Ain’t Markup Language)是一种用于配置文件的数据序列化格式。它易于阅读,并且经常被用于配置文件和数据交换。在Spring框架中,YAML文件通常以.yml.yaml为后缀。Spring Boot框架特别支持YAML格式的配置文件,并且提供了很多便利的方式来读取和使用这些配置。

基本语法

  1. 键值对:使用冒号(:)分隔键和值。
  2. 缩进:使用空格进行缩进,通常是两个空格,表示层级关系。
  3. 列表:使用短横线(-)表示列表中的项。
  4. 多行字符串:可以使用|>来表示多行字符串。
  5. 注释:以#开头的行被视为注释。

例如:配置数据库时,properties配置文件内容如下

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8&useSSL=false
spring.datasource.username=root
spring.datasource.password=root

上述配置在yml中的表示为

spring:datasource:url: jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8&useSSL=falseusername: rootpassword: root

获取yaml配置文件中的值

@RestController
public class ymlController {@Value("${spring.datasource.url}")private String url;@Value("${spring.datasource.username}")private String username;@PostConstructpublic void readValue() {System.out.println(url);}}

yml配置不同数据类型及null

# 字符串
string.value: hello# 布尔值,
boolean.value: true
boolean.value: false
# 浮点数
float.value: 3.14
# ~表示null
null.value: ~
# 空字符串,可以什么都不加,也可以加个引号
empty.value: ''

配置对象

例如,配置文件内容如下

student:id: 1name: zhangsanage: 18

如果想从配置文件中读取id、name、age,需要使用@ConfigurationProperties注解

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

加上注解后,Spring就会从配置文件中读取并且赋值给Student类的属性

配置集合

配置文件如下:

student:id: 1name: zhangsanage: 18databases:- mysql- sqlServer- redis

databases就是一个集合,可以使用List接收

@Data
@Configuration
@ConfigurationProperties(prefix = "student")
public class Student {private List<String> databases;
}

配置Map

配置文件内容:

myMap:k1: v1k2: v2

在Java中使用Map接收

@Data
@Configuration
@ConfigurationProperties(prefix = "student")
public class Student {private Map<String,String> myMap;
}

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

游戏引擎中的颜色科学

游戏引擎中的渲染组件的作用是生成一个二维图片&#xff0c;在特定的时间从给定的视点观察的方向看到的一个三维空间的状态。他们的生成每一张图片都会被称为帧&#xff0c;他们生成的速度称为帧率。 像素 在每一帧中&#xff0c;游戏引擎的视觉输出基本上是一大堆彩色像素&a…

计算机网络-以太网小结

前导码与帧开始分界符有什么区别? 前导码--解决帧同步/时钟同步问题 帧开始分界符-解决帧对界问题 集线器 集线器通过双绞线连接终端, 学校机房的里面就有集线器 这种方式仍然属于共享式以太网, 传播方式依然是广播 网桥: 工作特点: 1.如果转发表中存在数据接收方的端口信息…

D56【python 接口自动化学习】- python基础之异常

day56 异常的产生与分类 学习日期&#xff1a;20241102 学习目标&#xff1a;模块与标准库 -- 72 初始异常&#xff1a;异常的产生与分类 学习笔记&#xff1a; 什么是异常 异常的分类 总结 引发异常时&#xff0c;代码会进行中断exception-所有内置的非系统退出类异常都派…

轴承性能对步进电机的影响

步进电机作为一种重要的电动机类型&#xff0c;在工业自动化、机器人技术以及各种机械设备中得到了广泛应用。步进电机的性能直接关系到其控制精度、响应速度和可靠性&#xff0c;而其中一个关键的组成部分——轴承&#xff0c;往往被认为是影响步进电机性能的一个重要因素。 一…

Java项目实战II基于Spring Boot的个人云盘管理系统设计与实现(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。 一、前言 基于Spring Boot的个人云盘管理系统设计…

Java类和对象(上篇)

今天学习Java的类【认识类&#xff0c;并学习有关类的操作&#xff08;1.定义和使用 2.实例化 3. this引用 4.构造对象和初始化对象&#xff09;】 目录 1. 初步认知面向对象1.1 面向对象的概念1.1 面向对象和面向过程 2. 类定义和使用2.1 认识类2.2 类的定义格式2.3 练习2.3.1…

【路径——Dijkstra】

题目 代码 #include <bits/stdc.h> using namespace std; #define x first #define y second typedef pair<int, int> PII; const int N 2025, M N * N; int h[N], e[M], ne[M], w[M], idx; int dist[N]; int n 2021; void add(int a, int b, int c) {w[idx] …

ubuntu安装与配置Nginx(1)

在 Ubuntu 上安装和配置 Nginx 是相对简单的。以下是一个逐步指南&#xff1a; 1. 更新系统包 首先&#xff0c;确保你的系统是最新的。打开终端并运行&#xff1a; sudo apt update sudo apt upgrade2. 安装 Nginx 使用以下命令安装 Nginx&#xff1a; sudo apt install …

基于XSS的flash钓鱼上线Cobalt strike

题记 学习网安真是让人愉快啊&#xff0c;天天晚上睡觉之前都要想点技术问题&#xff0c;我是不是快魔怔了&#xff0c;今天打算搞XSS的flash钓鱼&#xff0c;完成一下写毕业论文的时候没有完成的事情。学习最有趣的地方就是在学习过程中发现新的不会的出现&#xff0c;下一个…

10.30.2024刷华为OD

文章目录 HJ20 密码验证合格程序&#xff08;难过全部例子 list取数左开有闭 [0,3) &#xff09;HJ21 简单密码HJ22 汽水瓶 (数学游戏...)HJ23 (dic就是map&#xff0c;注意怎么用&#xff0c; 善用values()和keys()函数返回list)语法知识记录 (留意转换的字符怎么拼接) HJ20 密…

安卓设备adb执行AT指令控制电话卡

文章目录 AT指令起源与发展&#xff1a;基本格式&#xff1a;常见应用领域及功能&#xff1a;不同设备中的应用&#xff1a; 安卓获取modem设备输入符入口安卓设备输入AT指令 AT指令 AT 指令是 Attention 的缩写&#xff0c;是一种用于控制调制解调器等通信设备的指令集。 起…

明日周刊-第26期

在昨晚的英雄联盟总决赛上&#xff0c;遗憾落败。少年终究还是没翻过最高的山&#xff0c;最长的河。虽然失败总是贯穿人生始终&#xff0c;但是你们还年轻&#xff0c;继续加油吧。 文章目录 1. 科技短讯OpenAI推出ChatGPT网络搜索Gemini AI接入谷歌地图&#x1f4f1;科技大厂…

(实战)WebApi第9讲:EFCore性能优化(IQueryable延迟查询、取消跟踪机制)

一、例子是第8讲的四、6&#xff08;EFCore的静态化处理 &#xff09;&#xff1a;分析ToList() ToList()在下图绿色框内。 二、在没有最终取数据的时候&#xff0c;使用 IQueryable<T> 延迟执行查询 &#xff08;1&#xff09;在没有最终取数据的时候&#xff0c;不要使…

三周精通FastAPI:29 定义在返回响应后运行的后台任务

官方文档&#xff1a;https://fastapi.tiangolo.com/zh/tutorial/background-tasks/ 后台任务 你可以定义在返回响应后运行的后台任务。 这对需要在请求之后执行的操作很有用&#xff0c;但客户端不必在接收响应之前等待操作完成。 包括这些例子&#xff1a; 执行操作后发…

Rust的enum枚举的强大用法

在Rust中&#xff0c;enum&#xff08;枚举&#xff09;是一种非常强大的类型&#xff0c;它可以包含多个变体&#xff08;variants&#xff09;&#xff0c;每个变体可以是不同的类型&#xff0c;包括复杂类型。这使得enum在Rust中不仅用于表示简单的状态或选项集合&#xff0…

Python世界:自动化办公Word之批量替换文本生成副本

Python世界&#xff1a;自动化办公Word之批量替换文本生成副本 任务背景编码思路代码实现相关参考 任务背景 为提高办公效率&#xff0c;用python试手了一个word任务&#xff0c;要求如下&#xff1a; 给你一个基础word文档A&#xff0c;格式为docx&#xff0c;名字为&#xf…

Git下载-连接码云-保姆级教学(连接Gitee失败的解决)

Git介绍 码云连接 一、Git介绍 二、Git的工作机制 下载链接&#xff1a;Git - 下载软件包 三、使用步骤 创建一个wss的文件夹&#xff0c;作为‘工作空间’ 四、连接码云账号 五、连接Gitee失败的解决方法 一、Git介绍 Git是一个免费的、开源的分布式版本控制…

【JavaEE初阶】网络原理(4)

欢迎关注个人主页&#xff1a;逸狼 创造不易&#xff0c;可以点点赞吗~ 如有错误&#xff0c;欢迎指出~ 目录 网络层 > IP协议 IP协议报头结构 4位版本 4位首部长度 8位服务类型(TOS) 16位总长度(字节数), 16位标识 3位标志位 13位片偏移 8位生存时间(TTL) 8位协议 16位首部…

vue3+vant实现视频播放(含首次禁止进度条拖拽,视频看完后恢复,保存播放视频进度,刷新及下次进入继续播放,判断视频有无全部看完等)

1、效果图 2、 <div><videocontrolsclass"video_player"ref"videoPlayer":src"videoSrc"timeupdate"handleTimeUpdate"play"onPlay"pause"onPause"ended"onVideoEnded"></video><…

LongVU :Meta AI 的解锁长视频理解模型,利用自适应时空压缩技术彻底改变视频理解方式

Meta AI在视频理解方面取得了令人瞩目的里程碑式成就&#xff0c;推出了LongVU&#xff0c;这是一种开创性的模型&#xff0c;能够理解以前对人工智能系统来说具有挑战性的长视频。 研究论文 "LongVU&#xff1a;用于长视频语言理解的时空自适应压缩 "提出了一种革命…