SpringBoot3如何读取配置文件application.properties的属性值

Spring Boot 项目中,可以通过以下几种方式读取 application.properties 文件中的配置属性值:


1. 使用 @Value 注解读取单个属性值

@Value 注解可以直接用于注入 application.properties 文件中的属性值。

示例

假设在 application.properties 中定义了以下配置项:

app.name=MyApp
app.version=1.0.0

可以在任意 @Component@Service@Controller 等注解标注的类中,通过 @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;public void printConfig() {System.out.println("App Name: " + appName);System.out.println("App Version: " + appVersion);}
}

注意${app.name} 表示从配置文件中读取 app.name 属性值。


2. 使用 @ConfigurationProperties 注解读取配置前缀

@ConfigurationProperties 注解允许批量读取具有相同前缀的属性,并将其注入到一个 Java 类中。这种方式适用于管理大量的配置项。

示例

假设在 application.properties 中定义了一组 app 前缀的属性:

app.name=MyApp
app.version=1.0.0
app.description=A sample application

可以创建一个配置类,并使用 @ConfigurationProperties 注解将 app 前缀的属性注入其中:

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;@Component
@ConfigurationProperties(prefix = "app")
public class AppConfigProperties {private String name;private String version;private String description;// Getter and Setter methodspublic String getName() {return name;}public void setName(String name) {this.name = name;}public String getVersion() {return version;}public void setVersion(String version) {this.version = version;}public String getDescription() {return description;}public void setDescription(String description) {this.description = description;}
}

在其他类中可以通过注入 AppConfigProperties 类来获取配置值:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;@Service
public class AppService {private final AppConfigProperties appConfigProperties;@Autowiredpublic AppService(AppConfigProperties appConfigProperties) {this.appConfigProperties = appConfigProperties;}public void printAppInfo() {System.out.println("App Name: " + appConfigProperties.getName());System.out.println("App Version: " + appConfigProperties.getVersion());System.out.println("App Description: " + appConfigProperties.getDescription());}
}

注意@ConfigurationProperties 注解类必须是一个 @Component,并且需要在 application.properties 中启用属性绑定支持,通常在 Spring Boot 中默认已启用。


3. 使用 Environment 读取属性

Environment 接口提供了动态获取属性值的方式,适合用于在运行时读取配置文件中的属性。

示例
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Component;@Component
public class EnvironmentConfig {private final Environment environment;@Autowiredpublic EnvironmentConfig(Environment environment) {this.environment = environment;}public void printEnvConfig() {String appName = environment.getProperty("app.name");String appVersion = environment.getProperty("app.version");System.out.println("App Name: " + appName);System.out.println("App Version: " + appVersion);}
}

注意Environment 接口适合在需要动态获取配置或配置项不确定的场景中使用。


4. 使用 @PropertySource 加载自定义配置文件

除了 application.properties,也可以定义自定义配置文件,并使用 @PropertySource 注解加载其中的属性。

示例
  1. 创建自定义配置文件 custom-config.properties,内容如下:

    custom.property1=value1
    custom.property2=value2
    
  2. 使用 @PropertySource 注解加载自定义配置文件:

    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.context.annotation.PropertySource;@Configuration
    @PropertySource("classpath:custom-config.properties")
    public class CustomConfig {@Value("${custom.property1}")private String property1;@Value("${custom.property2}")private String property2;public void printCustomConfig() {System.out.println("Custom Property 1: " + property1);System.out.println("Custom Property 2: " + property2);}
    }
    

注意:确保 custom-config.properties 文件位于 classpath 下(如 src/main/resources 目录)。


总结

以上是 Spring Boot 中读取 application.properties 文件属性值的几种常见方式:

  1. @Value 注解:直接读取单个属性值。
  2. @ConfigurationProperties 注解:批量读取具有相同前缀的属性。
  3. Environment 接口:动态读取属性,适合运行时获取。
  4. @PropertySource 注解:加载自定义配置文件的属性值。

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

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

相关文章

6.1、实验一:静态路由

源文件获取:6.1_实验一:静态路由.pkt: https://url02.ctfile.com/f/61945102-1420248902-c5a99e?p2707 (访问密码: 2707) 一、目的 理解路由表的概念 会使用基础命令 根据需求正确配置静态路由 二、准备实验 1.实验要求 让PC0、PC1、PC2三台电脑…

logback日志级别动态切换四种方案

生产环境中经常有需要动态修改日志级别。 现在就介绍几种方案 方案一&#xff1a;开启logback的自动扫描更新 配置如下 <?xml version"1.0" encoding"UTF-8"?> <configuration scan"true" scanPeriod"60 seconds" debug…

Qt字符编码

目前字符编码有以下几种&#xff1a; 1、UTF-8 UTF-8编码是Unicode字符集的一种编码方式(CEF)&#xff0c;其特点是使用变长字节数(即变长码元序列、变宽码元序列)来编码。一般是1到4个字节&#xff0c;当然&#xff0c;也可以更长。 2、UTF-16 UTF-16是Unicode字符编码五层次…

postman 获取登录接口中的返回token并设置为环境变量的方法 postman script

postman是一个比较方便的API开发调试工具&#xff0c; 我们在访问API时一般都需要设置一个token来对服务进行认证&#xff0c; 这个token一般都是通过登录接口来获取。 这个postman脚本放到登录接口的sctipt--> post-response里面即可将登陆接口中返回的token值设置到postma…

使用Django REST framework构建RESTful API

使用Django REST framework构建RESTful API Django REST framework简介 安装Django REST framework 创建Django项目 创建Django应用 配置Django项目 创建模型 迁移数据库 创建序列化器 创建视图 配置URL 配置全局URL 配置认证和权限 测试API 使用Postman测试API 分页 过滤和排序…

消息队列面试——打破沙锅问到底

消息队列的面试连环炮 前言 你用过消息队列么&#xff1f;说说你们项目里是怎么用消息队列的&#xff1f; 我们有一个订单系统&#xff0c;订单系统会每次下一个新订单的时候&#xff0c;就会发送一条消息到ActiveMQ里面去&#xff0c;后台有一个库存系统&#xff0c;负责获取…

Rust 力扣 - 1493. 删掉一个元素以后全为 1 的最长子数组

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 本题我们能转换成求只包含一个0的子数组的最长长度 如果数组中不存在0&#xff0c;则结果为数组长度减一 我们使用一个left指针指向子数组的左边界&#xff0c;然后我们遍历子数组的右边界&#xff0c;我们记录…

在 Windows 系统上,在两台机器上测试 MySQL 集群实现实时备份的基本步骤:

在两台机器上测试 MySQL 集群实现实时备份的基本步骤&#xff1a; 一、环境准备 机器配置 确保两台机器&#xff08;假设为服务器 A 和服务器 B&#xff09;能够互相通信&#xff0c;例如它们在同一个局域网内&#xff0c;并且开放了 MySQL 通信所需的端口&#xff08;默认是 3…

常见的开源软件许可证及其应用案例

目录 引言 开源的定义 开源许可证的种类 常见的开源许可证及其应用案例 结论 引言 开源软件在过去几十年中迅速发展&#xff0c;已经成为软件开发的重要组成部分。开源不仅仅是一种技术模式&#xff0c;更是一种文化和社区精神。本文将详细介绍开源的定义、开源许可证的种…

校招回顾 | “青春不散场,梦想正起航”,极限科技(INFINI Labs)亮相湖北工业大学 2025 秋季校园招聘会

10 月 31 日&#xff0c;极限科技&#xff08;INFINI Labs&#xff09; 受邀参加 湖北工业大学 2025 届秋季校园招聘会&#xff0c;这不仅是一次与满怀激情的青年学子们的深度碰撞&#xff0c;更是一场关于青春与未来的美好邂逅。让我们一起回顾校招现场的精彩瞬间&#xff0c;…

基于python的机器学习(一)—— 基础知识(Scikit-learn安装)

目录 一、机器学习基础 1.1 机器学习概述 1.2 监督学习、无监督学习和强化学习 1.3 聚类、分类、回归、标注 1.3.1 聚类 1.3.2 分类 1.3.3 回归 1.3.4 标注 1.4 机器学习、人工智能和数据挖掘 1.5 机器学习的三个要素 二、Scikit-learn 机器学习库 2.1 Scikit-lea…

第五篇: 使用Python和BigQuery进行电商数据分析与可视化

使用Python和BigQuery进行电商数据分析与可视化 大数据分析对于电商业务的洞察至关重要。在这篇文章中&#xff0c;我们将使用Python结合Google BigQuery来分析电商数据集&#xff0c;以最畅销商品和平均订单价格最高的前10位客户为主题&#xff0c;展示如何通过数据可视化提供…

基于SpringBoot+Vue的快递物流信息查询系统设计与实现【前后端分离】

基于SpringBootVue的快递物流信息查询系统设计与实现 摘要 随着电子商务的快速发展&#xff0c;快递物流系统的重要性愈发突出。针对用户对快递信息的实时查询需求&#xff0c;本系统结合Spring Boot和Vue技术&#xff0c;设计并实现了一个高效、易用的快递物流信息查询系统。系…

开源免费的API网关介绍与选型

api网关的主要作用 API网关在现代微服务架构中扮演着至关重要的角色&#xff0c;它作为内外部系统通信的桥梁&#xff0c;不仅简化了服务调用过程&#xff0c;还增强了系统的安全性与可管理性。例如&#xff0c;当企业希望将内部的服务开放给外部合作伙伴使用时&#xff0c;直…

WPF+MVVM案例实战(十七)- 自定义字体图标按钮的封装与实现(ABC类)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 1、案例效果1、按钮分类2、ABC类按钮实现1、文件创建2、字体图标资源3、自定义依赖属性4、按钮特效样式实现 3、按钮案例演示1、页面实现与文件创建2、依赖注入3 运…

使用MongoDB Atlas构建无服务器数据库

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 使用MongoDB Atlas构建无服务器数据库 MongoDB Atlas 简介 注册账户 创建集群 配置网络 设置数据库用户 连接数据库 设计文档模式…

【大语言模型】ACL2024论文-07 BitDistiller: 释放亚4比特大型语言模型的潜力通过自蒸馏

【大语言模型】ACL2024论文-07 BitDistiller: 释放亚4比特大型语言模型的潜力通过自蒸馏 目录 文章目录 【大语言模型】ACL2024论文-07 BitDistiller: 释放亚4比特大型语言模型的潜力通过自蒸馏目录摘要研究背景问题与挑战如何解决创新点算法模型实验效果代码推荐阅读指数&…

P9220 「TAOI-1」椎名真昼

P9220 「TAOI-1」椎名真昼 考点&#xff1a;博弈论、拓扑、强连通分量。 难度&#xff1a; 提高/省选- 。 题意&#xff1a; ​ Alice 和 Bob 玩游戏&#xff0c;给定一个有向图&#xff0c;每个点有初始颜色&#xff08;黑/白&#xff09;。 ​ 双方轮番操作一次&#xf…

计算机网络:网络层 —— 多播路由选择协议

文章目录 多播路由选择协议多播转发树构建多播转发树基于源树的多播路由选择建立广播转发树建立多播转发树 组共享树的多播路由选择基于核心的生成树的建立过程 因特网的多播路由选择协议 多播路由选择协议 仅使用 IGMP 并不能在因特网上进行IP多播。连接在局域网上的多播路由…

例行性工作

1、单一执行------at-----仅处理执行一次就结束了 1.1工作过程 /etc/at.allow&#xff0c;写在该文件的人可以使用at命令/etc/at.deny&#xff0c;黑名单两个文件如果都不存在&#xff0c;只有root能使用 1.2命令详解------命令格式&#xff1a;at [参数] [时间] 2、循环执行…