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

【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应用程序的配置更为集中和清晰。

相关文章:

【Spring】配置文件的使用

在Spring框架中&#xff0c;application.properties&#xff08;或application.yml&#xff09;文件用于配置Spring应用程序的各种属性。我们可以通过多种方式来使用这些配置&#xff0c;包括使用Value和ConfigurationProperties注解来绑定配置到Java对象。 下面是对不同配置类…...

MOM成功实施分享(七)电力电容制造MOM工艺分析与解决方案(第一部分)

声明&#xff1a;文章仅用于交流学习&#xff0c;不用于商业项目实施&#xff0c;图片来源于网络&#xff0c;如有侵犯权利&#xff0c;请联系作者及时删除。 本方案旨在对电力电容&#xff08;PEC和PQM型号&#xff09;制造工艺深度分析&#xff0c;结合管理要求设计MOM相关功…...

计算机毕业设计SpringBoot+Vue.js航空机票预定系统(源码+文档+PPT+讲解)

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…...

Python 爬取唐诗宋词三百首

你可以使用 requests 和 BeautifulSoup 来爬取《唐诗三百首》和《宋词三百首》的数据。以下是一个基本的 Python 爬虫示例&#xff0c;它从 中华诗词网 或类似的网站获取数据并保存为 JSON 文件。 import requests from bs4 import BeautifulSoup import json import time# 爬取…...

【二.提示词工程与实战应用篇】【3.Prompt调优:让AI更懂你的需求】

最近老张在朋友圈秀出用AI生成的国风水墨画,隔壁王姐用AI写了份惊艳全场的年终总结,就连楼下小卖部老板都在用AI生成营销文案。你看着自己跟AI对话时满屏的"我不太明白您的意思",是不是怀疑自己买了台假电脑?别慌,这可能是你的打开方式不对。今天咱们就聊聊这个…...

商城源码的框架

商城源码的框架通常是基于某种Web开发框架或者电子商务平台来构建的。以下是一些常见的商城源码框架&#xff1a; WooCommerce&#xff1a;基于WordPress的电子商务插件&#xff0c;适用于小型到中型的在线商店。 Magento&#xff1a;一个功能强大和灵活的开源电子商务平台&am…...

WordPress如何防Webshell、防篡改、防劫持,提升WP漏洞防护能力

WordPress是一款世界知名的CMS系统&#xff0c;不仅可以创建博客网站&#xff0c;还可以用于建设企业网站、下载网站、商城等各类网站。功能非常强大、结构科学合理&#xff0c;深受广大用户喜欢。 虽然WordPress非常优秀&#xff0c;但是为了保障网站安全&#xff0c;我们还是…...

Android Flow 示例

在Android开发的世界里&#xff0c;处理异步数据流一直是一个挑战。随着Kotlin的流行&#xff0c;Flow作为Kotlin协程库的一部分&#xff0c;为开发者提供了一种全新的方式来处理这些问题。今天&#xff0c;我将深入探讨Flow的设计理念&#xff0c;并通过具体的例子展示如何在实…...

刚安装docker并启动docker服务: systemctl restart docker报错解决

root:/home/lzw# sudo systemctl restart docker Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xeu docker.service" for details. 1、问题描述 启动doc…...

xss笔记与打靶(更新中)

这个文章好 https://blog.csdn.net/huangyongkang666/article/details/123624164?fromshareblogdetail&sharetypeblogdetail&sharerId123624164&sharereferPC&sharesource2401_88818565&sharefromfrom_link 什么是xss XSS&#xff08;跨站脚本攻击&…...

游戏引擎学习第133天

仓库:https://gitee.com/mrxiao_com/2d_game_3 回顾并设定今天的主题 今天的任务是进一步优化背景资源的流式加载&#xff0c;尤其是在内存管理方面。昨天&#xff0c;我们实现了资源流式加载&#xff0c;让游戏在加载时可以动态地加载背景&#xff0c;而不是一开始就把所有资…...

【鸿蒙操作系统】- 1:实习阶段的一些总结

本文目录 1. 序2.鸿蒙与欧拉的概念微内核LiteOS鸿蒙微内核POSIX标准 3.实习干了些什么身份鉴别访问控制恶意代码防范安全审计入侵防范性能压测检查系统版本网络测试常见的linux测试命令 1. 序 之前在某国企实习的时候&#xff0c;有幸参与了鸿蒙系统、鸿蒙欧拉的项目&#xff…...

Qt基础入门-详解

前言 qt之路正式开启 &#x1f493; 个人主页&#xff1a;普通young man-CSDN博客 ⏩ 文章专栏&#xff1a;C_普通young man的博客-CSDN博客 ⏩ 本人giee: 普通小青年 (pu-tong-young-man) - Gitee.com 若有问题 评论区见&#x1f4dd; &#x1f389;欢迎大家点赞&#x1f44…...

【前端】HTML 备忘清单(超级详细!)

文章目录 入门hello.html注释 Comment段落 ParagraphHTML 链接Image 标签文本格式标签标题Section Divisions内部框架HTML 中的 JavaScriptHTML 中的 CSS HTML5 标签页面标题导航HTML5 TagsHTML5 VideoHTML5 AudioHTML5 RubyHTML5 kdiHTML5 progressHTML5 mark HTML 表格Table …...

版图自动化连接算法开发 00004 ------ 给定一个点,添加一个中间点实现 Manhattan 方式连接两个给定的坐标点

版图自动化连接算法开发 00004 ------ 给定一个点,添加一个中间点实现 Manhattan 方式连接两个给定的坐标点 引言正文引言 必读文章 ------ 版图自动化连接算法开发 00001 ------ 直接连接两个给定的坐标点。 此处,我们对给定点的坐标进行一下限制,因为是只添加一个点,因…...

C# Enumerable类 之 数据筛选

总目录 前言 在 C# 中&#xff0c;System.Linq.Enumerable 类是 LINQ&#xff08;Language Integrated Query&#xff09;的核心组成部分&#xff0c;它提供了一系列静态方法&#xff0c;用于操作实现了 IEnumerable 接口的集合。通过这些方法&#xff0c;我们可以轻松地对集合…...

Grafana服务安装并启动

Grafana服务安装并启动 1、介绍2、下载Grafana3、解压缩文件4、启动Grafana服务5、增加数据源,填写Prometheus访问地址6、增加图表 1、介绍 Grafana是一个开源的可视化系统监控和警报工具包。 2、下载Grafana 介绍&#xff1a;Grafana是一个开源的可视化系统监控和警报工具包…...

蓝桥杯web第三天

展开扇子题目&#xff0c; #box:hover #item1 { transform:rotate(-60deg); } 当悬浮在父盒子&#xff0c;子元素旋转 webkit display: -webkit-box&#xff1a;将元素设置为弹性伸缩盒子模型。-webkit-box-orient: vertical&#xff1a;设置伸缩盒子的子元素排列方…...

C#开发——时间间隔类TimSpan

TimeSpan 是 C# 中的一个结构&#xff08; struct &#xff09;&#xff0c;用于表示时间间隔或持续时间。它位于 System 命名空间中&#xff0c;是处理时间相关操作时非常重要的工具&#xff0c;尤其是在计算两个日期或时间之间的差值、表示时间段或执行时间相关的运算…...

NModbus 连接到Modbus服务器(Modbus TCP)

1、在项目中通过NuGet添加NModbus&#xff0c;在界面中添加一个Button。 using NModbus.Device; using NModbus; using System.Net.Sockets; using System.Text; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Docu…...

AssetRipper:3步解锁Unity游戏资源逆向提取的终极免费方案

AssetRipper&#xff1a;3步解锁Unity游戏资源逆向提取的终极免费方案 【免费下载链接】AssetRipper GUI Application to work with engine assets, asset bundles, and serialized files 项目地址: https://gitcode.com/GitHub_Trending/as/AssetRipper 在Unity游戏开发…...

OpenHarmony FA启动机制全解析:从本地到远程的分布式能力实现

1. 项目概述&#xff1a;从“点击图标”到“界面呈现”的旅程当我们谈论一个应用在OpenHarmony上的启动&#xff0c;尤其是FA&#xff08;Feature Ability&#xff0c;特性能力&#xff09;的启动时&#xff0c;很多人脑海里浮现的可能是“用户点击图标&#xff0c;然后应用打开…...

N5105 4口2.5g V3 Intel i225 PVE 6.2下的Openclaw安装

一、Ubuntu 26.04安装 1. 从官网上下载ubuntu 26.04 LTS版本 下载地址&#xff1a;Download Ubuntu Desktop | Ubuntu 2. 将下载好的iso文件上传到pve中&#xff0c;登录PVE后台&#xff0c;点击local->ISO镜像->上传 3. 创建虚拟机 其他按默认配置即可。 4. 安装Ubu…...

RuoYi-Cloud项目导入避坑指南:从Maven配置到依赖下载的完整流程(附常见错误解决)

RuoYi-Cloud项目导入避坑指南&#xff1a;从Maven配置到依赖下载的完整流程 1. 项目准备与环境检查 在开始导入RuoYi-Cloud项目之前&#xff0c;确保你的开发环境已经准备就绪。这个微服务架构项目基于Spring Cloud Alibaba体系&#xff0c;对开发环境有特定要求&#xff1a; 基…...

紧急停止与异常停机:天勤策略里的断线保护与人工兜底

前言 网络闪断、进程被 kill、策略异常未捕获&#xff0c;都可能让持仓暴露在无人管理状态。天勤文档里有紧急停止相关能力&#xff08;见 advanced/emergency_stop.rst&#xff09;&#xff0c;我把它和自建「停机即平仓/撤单」脚本配合使用。下面写工程清单&#xff0c;不替代…...

医疗内容出海,为什么总在AI审核里“踩红线“?

同一篇科普文案&#xff0c;在国内平台正常推送&#xff0c;到了海外AI搜索里却被标记为"医疗广告"&#xff1f;最近一位做中医养生出海的朋友向我诉苦&#xff1a;他们精心制作的"节气养生"内容在国内抖音获得百万播放&#xff0c;可当他们把中文版直接翻…...

芜湖装修公司推荐哪家

在芜湖寻找一家可靠的装修公司&#xff1f;作为江城本土的老品牌&#xff0c;安徽百视装饰设计工程有限公司&#xff08;简称芜湖百视装饰&#xff09;绝对是您的理想选择。成立于2003年&#xff0c;已有24年完整的设计、工程、管理经历&#xff0c;是芜湖地区值得信赖的装修专…...

手把手教你用STM32的编码器模式,精准读取JGB37-520电机转速(附TB6612驱动配置)

基于STM32编码器模式实现JGB37-520电机闭环控制实战指南 在智能硬件开发领域&#xff0c;精确控制电机转速和位置是实现高质量运动控制的基础。JGB37-520作为一款带有霍尔编码器的减速电机&#xff0c;配合TB6612驱动模块&#xff0c;可以构建完整的闭环控制系统。本文将深入解…...

nuScenes数据集“平替”指南:Mini版够用吗?完整版、Test版到底怎么选?

nuScenes数据集选型实战指南&#xff1a;从Mini版到完整版的决策逻辑 第一次接触nuScenes数据集时&#xff0c;面对动辄几百GB的庞然大物和仅有3.9GB的mini版本&#xff0c;相信不少研究者都会陷入选择困难。这就像站在自助餐厅里&#xff0c;既想品尝所有美味&#xff0c;又担…...

华为云API调用实战:如何用Python脚本自动获取并刷新IAM用户Token?

华为云API自动化鉴权实战&#xff1a;Python实现Token动态管理与高可用方案 在云原生应用开发中&#xff0c;服务间API调用已成为现代系统架构的基石。华为云作为国内领先的云服务提供商&#xff0c;其API网关的鉴权机制直接关系到业务系统的稳定性和安全性。对于中高级开发者而…...