【Spring】配置文件的使用

在Spring框架中,application.properties(或application.yml)文件用于配置Spring应用程序的各种属性。我们可以通过多种方式来使用这些配置,包括使用@Value@ConfigurationProperties注解来绑定配置到Java对象。

下面是对不同配置类型的说明,以及如何在代码中使用它们的示例。

1. 配置变量(单个属性)

可以在application.properties文件中定义简单的属性。例如:

app.name=MyApplication
app.version=1.0.0

然后,可以通过@Value注解注入这些属性:

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;@Component
public class AppConfig {@Value("${app.name}")private String appName;@Value("${app.version}")private String appVersion;// 其他方法
}
2. 配置对象(使用@ConfigurationProperties)

当需要将一组相关的属性映射到一个Java对象中时,可以使用@ConfigurationProperties注解。

首先,在application.properties中定义一组属性:

app.db.url=jdbc:mysql://localhost:3306/mydb
app.db.username=root
app.db.password=secret

接下来,创建一个配置类:

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;@Component
@ConfigurationProperties(prefix = "app.db")
public class DatabaseProperties {private String url;private String username;private String password;// Getters and Setterspublic String getUrl() {return url;}public void setUrl(String url) {this.url = url;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}
}
3. 配置集合

如果有一组相同类型的属性,可以将它们配置为集合。在application.properties中这样定义:

app.servers[0]=server1.example.com
app.servers[1]=server2.example.com
app.servers[2]=server3.example.com

然后,可以在一个配置对象中使用List来接收这些配置:

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;import java.util.List;@Component
@ConfigurationProperties(prefix = "app")
public class AppConfig {private List<String> servers;// Getter and Setterpublic List<String> getServers() {return servers;}public void setServers(List<String> servers) {this.servers = servers;}
}
4. 配置Map

如果需要将配置映射为Map, 可以这样做:

application.properties中:

app.features.feature1.enabled=true
app.features.feature1.name=Feature 1
app.features.feature2.enabled=false
app.features.feature2.name=Feature 2

然后,可以使用Map来接收这些配置信息:

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;import java.util.Map;@Component
@ConfigurationProperties(prefix = "app.features")
public class FeaturesProperties {private Map<String, Feature> features;// Getter and Setterpublic Map<String, Feature> getFeatures() {return features;}public void setFeatures(Map<String, Feature> features) {this.features = features;}public static class Feature {private boolean enabled;private String name;// Getters and Setterspublic boolean isEnabled() {return enabled;}public void setEnabled(boolean enabled) {this.enabled = enabled;}public String getName() {return name;}public void setName(String name) {this.name = name;}}
}
总结
  • @Value适合读取单个简单属性。
  • @ConfigurationProperties适用于一组相关的属性,可以是集合或Map,能更好地组织属性。
  • 配置文件的内容可以灵活地根据需要进行管理和访问,使得Spring应用程序的配置更为集中和清晰。

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

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

相关文章

Linux总结之CentOS Stream 9安装mysql8.0实操安装成功记录

Linux总结之CentOS Stream 9安装mysql8.0实操安装成功记录 由于网上很多的mysql8.0安装教程都是老版本或者安装过程记录有问题&#xff0c;导致经常安装到一半需要删除重新安装。所以将成功的实操安装过程记录一下&#xff0c;方面后面查阅&#xff0c;大家还有问题的可以在此讨…

柒拾捌- 如何通过数据影响决策(六)- 放大再放大

1、整体带来的错觉 当我们观察宏观的数据时&#xff0c;常常会发现有些东西 无法理解。例如为什么人人都说楼价在跌&#xff0c;但公布的楼价数据却在涨&#xff1f;例如为什么经济感受那么差&#xff0c;宏观数据却还是在涨&#xff1f; 如果我们只在于 某个粒度 的数据&…

sql group by 多个字段例子

有表如下&#xff1b; 获取某年份、某地区、某产品的销售总额&#xff0c; 或者根据需要把字段顺序换一下&#xff1b; insert into sales (product, year, region, amount) values (飞机,2000,东部,5); insert into sales (product, year, region, amount) values (飞机,2001,…

在Windows上读写Linux磁盘镜像的一种方法

背景 嵌入式开发中&#xff0c;经常会把系统的Linux磁盘镜像保存到Windows上&#xff0c;以便上传到网盘备份或发送给工厂&#xff0c;但是如果想读取/修改镜像中的某个文件&#xff0c;一般有2种方案&#xff1a; 直接访问 就是用虚拟磁盘软件将镜像文件挂载成磁盘&#xf…

uniapp开发微信小程序实现获取“我的位置”

1. 创建GetLocation项目 使用HBuilder X创建一个项目GetLocation,使用Vue3。 2. 在腾讯地图开放平台中创建应用 要获取位置,在小程序中需要使用腾讯地图或是高德地图。下面以腾讯地图为例。 (1)打开腾讯地图开放平台官方网址:腾讯位置服务 - 立足生态,连接未来 (2)注册…

XXE漏洞 黑盒测试 白盒测试 有无回显问题

前言 什么是XXE&#xff08;xml外部实体注入漏洞&#xff09;&#xff1f; 就是网站以xml传输数据 的时候我们截取他的传输流进行修改&#xff08;网站没有对我们的输入进行过滤&#xff09; 添加恶意代码 导致数据传输到后台 后台解析xml形式 导致恶意代码被执行 几种常见的…

《数据结构》期末考试测试题【上】

数据结构测试题 1.数据结构是指什么&#xff1f;2.某语句时间复杂为&#xff1f;3.关于数据结构的说法那个正确&#xff1f;4.一个算法的评价标准包括哪些方面?5.时间复杂度指的是什么&#xff1f;6.算法的重要特征有那些&#xff1f;7.某语句时间复杂为&#xff1f;8.存储数据…

PCA降维MATLAB代码解释及应用场景

代码整体功能概述 这段代码主要实现了以下几个功能&#xff1a;首先读取两个 CSV 文件中的数据&#xff0c;对数据进行归一化处理后合并&#xff0c;接着绘制原始数据的散点图进行可视化展示&#xff0c;然后应用主成分分析&#xff08;PCA&#xff09;算法对合并后的数据进行…

JVM学习-内存结构(一)

一、引言 学前了解&#xff1a; 1.什么是JVM 1.1定义 Java Virtual Machine &#xff0c;Java 程序的运行环境&#xff08;Java 二进制字节码的运行环境&#xff09;。 好处 一次编译&#xff0c;处处执行 自动的内存管理&#xff0c;垃圾回收机制 数组下标越界检查 比较…

【C++】统计正整数的位数:题目解析与代码优化

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;题目描述**题目要求&#xff1a;统计正整数的位数** &#x1f4af;我的代码实现**核心逻辑解析** &#x1f4af;老师的代码实现**老师代码逻辑解析** &#x1f4af;我的代码…

QML学习(五) 做出第一个简单的应用程序

今天先尝试做出第一个单页面的桌面应用程序。 1.首先打开Qt,创建项目&#xff0c;选择“QtQuick Application - Empty” 空工程。 2.设置项目名称和项目代码存储路径 3.这里要注意选择你的编译器类型&#xff0c;以及输出的程序时32位还是64位。 4.然后一路下一步生成项目框…

光谱相机与普通相机的区别

一、成像目的 普通相机&#xff1a;主要目的是记录物体的外观形态&#xff0c;生成人眼可见的、直观的二维图像&#xff0c;重点在于还原物体的形状、颜色和纹理等视觉特征&#xff0c;以供人们进行观赏、记录场景或人物等用途。例如&#xff0c;拍摄旅游风景照片、人物肖像等…

PhPMyadmin-cms漏洞复现

一.通过日志文件拿Shell 打开靶场连接数据库 来到sql中输入 show global variables like %general%; set global general_logon; //⽇志保存状态开启&#xff1b; set global general_log_file D:/phpstudy/phpstudy_pro/WWW/123.php //修改日志保存位置 show global varia…

【畅购电商】项目总结

目录 1. 电商项目架构图 1.1 系统架构 1.2 技术架构 2. 介绍电商项目 2.1 后台和前台、后端和前端 2.2 Vue全家桶包含哪些技术&#xff1f; 2.3 什么是Vuex&#xff1f; 2.4 什么是SSR 2.5 电商模式是什么&#xff1f; 2.6 枚举类 2.7 elasticsearch相关 2.8 gatew…

开源的go语言统一配置中心 - nacos + nacos go sdk

配置文件实时更新机制的场景需求 配置文件热更新主要应用于需要在不停机的情况下动态调整系统行为的场景&#xff0c;例如修改服务参数、切换数据源等。其原理在于通过一个中心化的管理平台来存储和分发最新的配置信息。当配置文件发生变化时&#xff0c;该平台会主动或被动地…

Redis--如何保障缓存数据库一致性?(面试高频问题)

如何保障缓存数据库一致性&#xff1f; 数据库和缓存不一致采用什么方案&#xff1f;实现商铺和缓存与数据库双写一致背景点评项目使用了什么策略&#xff1f; 存在什么问题&#xff1f;延迟双删&#xff08;强一致场景&#xff09;分布式锁&#xff08;强一致场景&#xff09;…

【Python系列】Python 连接 PostgreSQL 数据库并查询数据

???欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老…

Spring5.1.3 @Autorwired注解原理重新回顾

直接用一些例子代码说明Autorwired的工作原理&#xff0c;Spring版本为5.1.3 。 一般认为Autorwired是自动注入的&#xff0c;但实际不是&#xff0c;和byName, byType等自动注入没有任何关系。 Ca & Cb & Cc 三个类 Ca public class Ca {public Ca(){System.out.p…

Linux shell脚本用于常见图片png、jpg、jpeg、webp、tiff格式批量转PDF文件

Linux Debian12基于ImageMagick图像处理工具编写shell脚本用于常见图片png、jpg、jpeg、webp、tiff格式批量转PDF文件&#xff0c;”多个图片分开生成多个PDF文件“或者“多个图片合并生成一个PDF文件” BiliBili视频链接&#xff1a; Linux shell脚本对常见图片格式批量转换…

Linux应用软件编程-多任务处理(进程)

多任务&#xff1a;让系统具备同时处理多个事件的能力。让系统具备并发性能。方法&#xff1a;进程和线程。这里先讲进程。 进程&#xff08;process&#xff09;&#xff1a;正在执行的程序&#xff0c;执行过程中需要消耗内存和CPU。 进程的创建&#xff1a;操作系统在进程创…