Spring Boot读取配置文件值 (@ConfigurationProperties注解或@Value注解)

2023-11-18

如何使用Java读取到properties文件中的内容,并且把它封装到JavaBean中,以供随时使用

传统方法:

public class getProperties {
     public static void main(String[] args) throws FileNotFoundException, IOException {
                 //properties读数据
                Properties properties = new Properties();
                //本地读取配置文件写法
                try (Reader reader = new InputStreamReader(new FileInputStream("src/main/resources/examine.properties"), "UTF-8")) {
                    properties.load(reader);
                }
            //根据key单独获取value,#请勿使用这类文字
                String notUse = properties.getProperty("notuse");
    
     }
 }

1. 使用@ConfigurationProperties注解

一、Spring Boot一种配置配置绑定:

@ConfigurationProperties + @Component

假设有配置文件application.properties

mycar.brand=BYD
mycar.price=100000

只有在容器中的组件,才会拥有SpringBoot提供的强大功能,所以需要@component

@Component
@ConfigurationProperties(prefix = "mycar")
public class Car {
    private String brand;
    private int price;
...
}

这样Car的实例已经绑定了brand为BYD,price为100000 

二、Spring Boot另一种配置配置绑定:

@EnableConfigurationProperties + @ConfigurationProperties

  1. 开启Car配置绑定功能
  2. 把这个Car这个组件自动注册到容器中
@EnableConfigurationProperties(Car.class)
public class MyConfig {
...
}
@ConfigurationProperties(prefix = "mycar")
public class Car {
    private String brand;
    private int price;
}

这样Car的实例已经绑定了brand为BYD,price为100000 

三、解除使用@ConfigurationProperties注解警告

如果有报错/警告,可以参考下面内容:

 

2. 使用 @Value注解

一、@Value注解介绍

当使用@Value注解读取配置文件的值时,首先需要在需要读取配置值的字段上使用@Value注解,并传入配置文件中的键作为参数。然后,Spring Boot会自动将配置文件中对应键的值注入到该字段中。

二、@Value注解案例 

下面是一个详细的示例,假设有一个配置文件application.properties,其中包含了一个名为app.name的配置项:

app.name=My Application

在需要读取该配置项的类中,可以通过@Value注解读取配置文件的值:

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

@Component
public class MyApp {
    @Value("${app.name}")
    private String applicationName;

    public void printApplicationName() {
        System.out.println("Application Name: " + applicationName);
    }
}

在上述示例中,@Value("${app.name}")表示要读取配置文件中app.name的值,并将其注入到applicationName字段中。然后,可以在printApplicationName()方法中打印该值。

当应用启动时,Spring Boot会自动加载配置文件,并将配置文件中的值注入到相应的字段中。可以在其他组件或服务中使用MyApp类,并调用printApplicationName()方法来获取和使用配置文件中的值。

注意:要确保配置文件正确命名为application.properties,并放置在Spring Boot应用的classpath下,例如src/main/resources目录。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring Boot读取配置文件值 (@ConfigurationProperties注解或@Value注解) 的相关文章

  • Java:如何从转义的 URL 获取文件?

    我收到了一个定位本地文件的 URL 事实上我收到的 URL 不在我的控制范围内 URL 按照 RFC2396 中的定义进行有效转义 如何将其转换为 Java File 对象 有趣的是 URL getFile 方法返回一个字符串 而不是文件
  • org.apache.sling.api.resource,version=[2.3,3) -- 无法解析

    您好 我无法访问我的项目内容 我已经上传了从 CQ 访问内容所需的所有包 我唯一能看到的是 org apache sling api resource version 2 3 3 无法解析 这是否是异常的原因 如果是 请告诉我如何解决 中Q
  • OpenCV 中的 Gabor 内核参数

    我必须在我的应用程序中使用 Gabor 过滤器 但我不知道这个 OpenCV 方法参数值 我想对虹膜进行编码 启动 Gabor 过滤器并获取特征 我想对 12 组 Gabor 参数值执行此操作 然后我想计算 Hamming Dystans
  • Java AES 128 加密方式与 openssl 不同

    我们遇到了一种奇怪的情况 即我们在 Java 中使用的加密方法会向 openssl 生成不同的输出 尽管它们在配置上看起来相同 使用相同的键和 IV 文本 敏捷的棕色狐狸跳过了懒狗 加密为 Base64 字符串 openssl A8cMRI
  • 比较两个文本文件的最快方法是什么,不将移动的行视为不同

    我有两个文件非常大 每个文件有 50000 行 我需要比较这两个文件并识别更改 然而 问题是如果一条线出现在不同的位置 它不应该显示为不同的 例如 考虑这个文件A txt xxxxx yyyyy zzzzz 文件B txt zzzzz xx
  • java中如何连接字符串

    这是我的字符串连接代码 StringSecret java public class StringSecret public static void main String args String s new String abc s co
  • 运行具有外部依赖项的 Scala 脚本

    我在 Users joe scala lib 下有以下 jar commons codec 1 4 jar httpclient 4 1 1 jar httpcore 4 1 jar commons logging 1 1 1 jar ht
  • 如何在不超过最大值的情况下增加变量?

    我正在为学校开发一个简单的视频游戏程序 我创建了一个方法 如果调用该方法 玩家将获得 15 点生命值 我必须将生命值保持在最大值 100 并且由于我目前的编程能力有限 我正在做这样的事情 public void getHealed if h
  • 为什么 Linux 原始套接字的 RX 环大小限制为 4GB?

    背景 我试图mmap 我的原始套接字的 RX 环形缓冲区64 bitLinux 应用程序 我的环由 4096 个块组成 每个块大小为 1MB 总共 4GB 请注意 每个 1MB 块中可以有许多帧 如果您好奇 请参阅此文档了解背景信息 htt
  • Hibernate.createBlob() 方法从 Hibernate 4.0.1 开始已弃用,并移至 Hibernate.getLobCreator(Session session).createBlob()

    Method Hibernate createBlob 已弃用自休眠4 0 1并搬到Hibernate getLobCreator Session session createBlob 任何解决方案我应该在方法内传递什么getLobCrea
  • Java 文件上传速度非常慢

    我构建了一个小型服务 它从 Android 设备接收图像并将其保存到 Amazon S3 存储桶中 代码非常简单 但是速度非常慢 事情是这样的 public synchronized static Response postCommentP
  • Pivotal Cloud Foundry - 连接到外部 Oracle 数据库

    我正在创建一个 Spring boot 应用程序 该应用程序连接到一个不由 PCF 管理 或驻留在外部 的 Oracle 数据库 在我的本地开发环境中 我在 application properties 文件中配置了数据库连接详细信息 有人
  • 画透明圆,外面填充

    我有一个地图视图 我想在其上画一个圆圈以聚焦于给定区域 但我希望圆圈倒转 也就是说 圆的内部不是被填充 而是透明的 其他所有部分都被填充 请参阅这张图片了解我的意思 http i imgur com zxIMZ png 上半部分显示了我可以
  • 如何使用 Maven 打包并运行具有依赖项的简单命令行应用程序?

    我对 java 和 Maven 都是全新的 所以这可能非常简单 如果我遵循maven2hello world此处的说明 http maven apache org guides getting started maven in Five m
  • Java 8 流 - 合并共享相同 ID 的对象集合

    我有一系列发票 class Invoice int month BigDecimal amount 我想合并这些发票 这样我每个月都会收到一张发票 金额是本月发票金额的总和 例如 invoice 1 month 1 amount 1000
  • 具有 java XSLT 扩展的数组

    我正在尝试使用 java 在 XSLT 扩展中使用数组 我收到以下错误 Caused by java lang ClassCastException org apache xpath objects XObject cannot be ca
  • 如何在selenium服务器上提供自定义功能?

    我知道可以通过某种方法获得一些硒功能 其中之一如下 driver getCapabilities getBrowserName 它返回浏览器名称的值 但如果它指的是一个可用的方法 如果我没有误解的话 这似乎与自定义功能有关 就像我的意思是
  • 考虑在配置中定义“org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder”类型的 bean

    我正在尝试将 jwt 令牌连接到我的项目 但在工作过程中遇到了一些问题 我已按照上述说明进行操作here https auth0 com blog implementing jwt authentication on spring boot
  • 具有特定参数的 Spring AOP 切入点

    我需要创建一个我觉得很难描述的方面 所以让我指出一下想法 com x y 包 或任何子包 中的任何方法 一个方法参数是接口 javax portlet PortletRequest 的实现 该方法中可能有更多参数 它们可以是任何顺序 我需要
  • 在 RESTful Web 服务中实现注销

    我正在开发一个需要注销服务的移动应用程序 登录服务是通过数据库验证来完成的 现在我陷入了注销状态 退一步 您没有提供有关如何在应用程序中执行身份验证的详细信息 并且很难猜测您在做什么 但是 需要注意的是 在 REST 应用程序中 不能有会话

随机推荐

  • 超声非线性成像-谐波成像基本知识

    文章目录 概述 超声的非线性 组织谐波成像 组织谐波的提取方法 组织谐波成像的优点 造影谐波成像 应用实例 总结 参考文献 概述 最近了解了一下非线性超声中的谐波成像 可以作为知识普及了解一下 大部分来自于文献 如有遗漏可以私信咸鱼进行修改
  • 可重入锁是什么?

    本文内容如有错误 不足之处 欢迎技术爱好者们一同探讨 在本文下面讨论区留言 感谢 文章目录 简介 ReentrantLock 中断锁获取 可重入设计的意义 不可重入锁 不可重入改为可重入 简介 可重入锁在Java中有synchronize和
  • 麒麟服务器系统、CentOS系统扩展磁盘、根目录大小

    一 实际问题 服务器根目录占用53 只有13G可用 需要扩容磁盘 若没有单独分区给目录做存储 其他目录如 var lib 都是默认共享根目录空间大小的 若这些目录空间太小都可以通过扩容根目录大小解决 二 介绍部分 介绍 PV VG LV P
  • Set(List)与String互转

    一 Set与String互转 在处理JSON数据时 我发现想把数据取出来用set去重 然后toString后放回JSON 但是再取出来要转成Set时就出问题了 这是一个用例 JSONObject jsonObject new JSONObj
  • 【c++从菜鸡到王者】第五篇-( 全网最精华)条件编译ifdef的用法

    预处理指令 预处理指令是以 号开头的代码行 号必须是该行除了任何空白字符外的第一个字符 后是指令关键字 在关键字和 号之间允许存在任意个数的空白字符 整行语句构成了一条预处理指令 该指令将在编译器进行编译之前对源代码做某些转换 预处理指令是
  • Qt QTouchEvent 多点触控

    首先设置接收触控事件 setAttribute Qt WA AcceptTouchEvents true bool CollectionPoint event QEvent event switch event gt type case Q
  • 一,Docker安装与启动

    目录 1 安装Docker 2 设置ustc的镜像 3 Docker的启动与停止 3 常用命令 3 1 1 查看镜像 3 1 2 搜索镜像 3 1 3 拉取镜像 3 1 4 删除镜像 3 2 容器相关命令 3 2 1 查看容器 3 2 2
  • 包建强:为什么我说Android插件化从入门到放弃?

    转自 http www infoq com cn articles android plug ins from entry to give up 本文根据包建强在2016GMTC全球移动开发大会上的演讲整理而成 首先自我介绍一下 我叫包建强
  • 【c++】rand()随机函数的应用(一)——rand()函数详解和实例

    c 语言中可以用rand 函数生成随机数 今天来探讨一下rand 函数的基本用法和实际应用 本系列文章共分两讲 今天主要介绍一下伪随机数生成的原理 以及在伪随机数生成的基础上 生成随机数的技巧 下一讲主要介绍无重复随机数生成的方法和舒尔特方
  • 查看数据库表所占容量空间大小

    一 查看所有数据库容量大小 二 查看所有数据库各表容量大小 三 查看指定数据库容量大小 四 查看指定数据库各表容量大小 五 查看指定数据库指定表容量大小 数据库情况 一 查看所有数据库容量大小 SELECT table schema AS
  • 计算机病毒及其防治技术期末复习

    计算机病毒及其防治技术 总结复习 文章目录 计算机病毒及其防治技术 总结复习 第一章 概述 第二章 蠕虫 第三章 病毒结构 第四章 计算机病毒的技术特征 第五章 特洛伊木马 第六章 宏病毒 第七章 Linux病毒 第八章 移动终端恶意代码
  • 公务员备考(四十) 图推提升

    第一章 平面专题总结 一 线总结 1 曲线直线 曲直图形判断原则 有曲则为曲 无曲才为直 阴影图形不讨论曲直性 曲直规律图形特点 a 纯直线曲线图形 b 简笔画实物图形 c 单区域简单图形 d 内外结构图形 2 平行线 含回旋折线 a 轮廓
  • NeRF系列(1):NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis 论文解读与公式推导(二)

    接上文 NeRF开山之石 NeRF Representing Scenes as Neural Radiance Fields for View Synthesis 论文解读与公式推导 一 LeapMay的博客 CSDN博客 本文提出了一种
  • out-of-tree模块做覆盖率统计

    1 准备如下测试用例 并编译成模块 hi c include
  • 一些比较好用的域名信息查询网站

    NSEC Lab 查询IP地址所在位置及可信程度 真人概率 的数值在50 以上 可以被认定为此IP的网页访问量基本由人类主动行为产生 分值愈高越真实 低于50 则有较高可能性是此IP的行为是机器人主导 ip地址归属地查询 可查询网站域名 解
  • Python编程进阶,常用8大技巧!

    整理字符串输入 整理用户输入的问题在编程过程中极为常见 通常情况下 将字符转换为小写或大写就够了 有时你可以使用正则表达式模块 Regex 完成这项工作 但是如果问题很复杂 可能有更好的方法来解决 user input This nstri
  • 关于RS485通讯中使用STM32串口以DMA方式发送数据丢失字节的问题

    1 开发平台 计算机操作系统 WIN7 64位 开发环境 Keil MDK 5 14 MCU STM32F407ZET6 STM32F4xx固件库 STM32F4xx DSP StdPeriph Lib V1 4 0 串口调试助手 2 问题
  • /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.15' not found错误的解决

    http www cnblogs com weinyzhou p 4983306 html 在安装cmake3 5 1运行 bootstrap的时候出现如下提示 code class hljs asciidoc has numbering
  • springboot整合shiro相关依赖和配置整理

    springboot整合shiro 一 shiro快速开始 去github下载shiro 找到samples quickstart文件夹 用idea打开它 点进shiro ini文件 这个时候idea会提示下载插件 下载它 二 新建一个sp
  • Spring Boot读取配置文件值 (@ConfigurationProperties注解或@Value注解)

    如何使用Java读取到properties文件中的内容 并且把它封装到JavaBean中 以供随时使用 传统方法 public class getProperties public static void main String args