spring boot 配置文件加载的加载和使用

文章目录

  • 添加配置信息
  • 使用@ConfigurationProperties注入属性
  • 使用@Value注入属性
  • 两种方式对比分析
  • 自定义配置
    • 添加自定义配置
    • 加载并使用配置信息

添加配置信息

在实际开发中,应用程序的配置文件可能会变得非常复杂,属性的数量也会很多。为了更好地组织和管理属性,可以使用Spring Boot的属性分组功能。

  • application.properties
    可以在application.properties中增加配置
upload.file.path=/tmp
upload.file.types=jpg,png,ico
upload.file.maxLength=10240 # 10KB
  • application.yml
    也可以在application.yml中增加配置
upload:file:path: /tmptypes: jpg,png,icomaxLength: 10240 # 10KB

以上两种配置方式作用是相同的,都定义了一个upload.file的分组。

properties与YAML格式的配置作用相同,但YAML使用缩进来表示层级关系,更加易读、易维护,也更加灵活。对于复杂配置,推荐使用YAML,但对于简单的配置项,也可以使用properties。

使用@ConfigurationProperties注入属性

声明一个JavaBean

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;@Data
@Configuration
@ConfigurationProperties(prefix = "upload.file")
/*** @Description 文件上传相关的配置* @Author HaleyHu* @Date 2024/12/5 16:20*/
public class UploadFileConfig {private String path;private String types;private long maxLength;
}

使用这些属性

@RestController
/*** @Description* @Author HaleyHu* @Date 2024/12/5 16:21*/
public class HelloController {@Autowiredprivate UploadFileConfig config;@GetMapping("/hello")public String hello() {System.out.println(config);return "Hello Spring Boot!";}
}

使用@Value注入属性

@Value也能从配置文件中获取属性的值,需要逐个属性进行绑定。

@RestController
/*** @Description* @Author HaleyHu* @Date 2024/12/5 16:21*/
public class HelloController {@Value("${upload.file.path}")private String path;@Value("${upload.file.types}")private String types;@Value("${upload.file.maxLength}")private int maxLength;@GetMapping("/hello")public String hello() {System.out.println("path: " + path + ", types: " + types + ", maxLength: " + maxLength);return "Hello Spring Boot!";}
}

运行效果:
在这里插入图片描述

两种方式对比分析

  • 使用位置不同
    @ConfigurationProperties标注在JavaBean的类名上,@Value标注在JavaBean的属性上。
  • 功能有差异
    @ConfigurationProperties用于批量绑定配置文件中的配置,@Value只能一个一个地指定需要绑定的位置,绑定粒度更小。
  • 复杂类型封装
    @ConfigurationProperties支持所有类型的封装,如Map/List/Set以及对象等;@Value只支持基本数据类型的封装,如字符串、布尔值、整数值等。
  • 应用场景不同
    如果只是获取配置文件中的某项值,推荐使用@Value注解;如果专门编写一个JavaBean来和配置文件映射,建议使用@ConfigurationProperties注解。

自定义配置

添加自定义配置

# user.properties
name=Tom
age=25

加载并使用配置信息

/*** @Description* @Author HaleyHu* @Date 2024/12/5 16:33*/
@PropertySource("classpath:user.properties")
@RestController
public class PropertyController {@Value("${name}")private String name;@Value("${age}")private int age;@GetMapping("/property")public String property() {return name + " - " + age;}
}

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

17. Threejs案例-Three.js创建多个立方体

17. Threejs案例-Three.js创建多个立方体 实现效果 知识点 WebGLRenderer (WebGL渲染器) WebGLRenderer 是 Three.js 中用于渲染 WebGL 场景的核心类。它负责将场景中的对象渲染到画布上。 构造器 new THREE.WebGLRenderer(parameters) 参数类型描述parametersObject可选…

QNX的内存布局和启动入口

参考资料: QNX官网文档 内存布局 添加图片注释,不超过 140 字(可选) 查看系统内存布局 # pidin syspage=asinfo Header size=0x00000108, Total Size=0x0000d1b0, #Cpu=8, Type=257 Section:asinfo offset:0x0000bdf0 size:0x00000d00 elsize:0x000000200000

【成功解决】:VS2019(Visual Studio 2019)遇到E2870问题:此配置中不支持 128 位浮点类型

起因:项目中需要用json来操作数据,就引了cJSON库(cJSON.h和cJSON.c文件),但是发现编译报错如下 E2870 此配置中不支持 128 位浮点类型 test0 ...\usr\include\x86_64-linux-gnu\bits\floatn.h 75 然后先新建了个工程来检查问题(甚至在这之前还以为是cjson…

【LeetCode】122.买卖股票的最佳时机II

文章目录 题目链接:题目描述:解题思路一(贪心算法):解体思路二(动态规划): 题目链接: 122.买卖股票的最佳时机II 题目描述: 解题思路一(贪心算法…

【源码解读】SpringMMVC执行流程

直接进入主题,当我们执行一条请求的时候,是会进入到org.springframework.web.servlet.DispatcherServlet类的doDispatch方法中 这个方法是从HandleMapping中获取对应的Handle 其实就是得到我们需要执行的某个方法 接下来判断这个mapperhandle是否为空 如…

【时时三省】(C语言基础)结构体的变量定义和初始化

山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 有了结构体类型,那如果定义变量,其实很简单。 示例: 这个就是结构体变量的基础创建 初始化 比如里面只剩一个s3 s3里面有两个成员 第一个给c的值 第二个给…

与火山引擎合作深化,观测云携一站式监控解决方案登陆万有商城

近日,观测云正式宣布入驻火山引擎的万有商城。作为一款全栈式数据观测与分析平台,观测云的加入不仅丰富了火山引擎生态,也为广大企业用户带来了更便捷的数字化工具,助力企业快速实现业务监控与优化。 从全球覆盖到本地深耕&#x…

【2025最新计算机毕业设计】基于SpringBoot+Vue旅游路线推荐系统【提供源码+答辩PPT+文档+项目部署】

作者简介:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流。✌ 主要内容:🌟Java项目、Python项目、前端项目、PHP、ASP.NET、人工智能…

Docker安装Valkey教程(图文教程)

本章教程,介绍如何使用Docker启动Valkey的具体步骤。 一、什么是Valkey? Valkey 是一个高性能的开源键值存储系统,支持多种工作负载,包括缓存、消息队列和主数据库。它可以作为独立守护进程或集群运行,并提供复制和高可用性功能。 Valkey 原生支持多种数据类型,如字符串、…

漫画之家系统:Spring Boot技术下的漫画社区构建

3 系统分析 3.1系统可行性分析 3.1.1经济可行性 由于本系统是作为毕业设计系统,且系统本身存在一些技术层面的缺陷,并不能直接用于商业用途,只想要通过该系统的开发提高自身学术水平,不需要特定服务器等额外花费。所有创造及工作过…

10a大电流稳压芯片_24v转3.3v稳压芯片,高效率DC-DC变换器10A输出电流芯片-AH1514

### AH1514——高性能的大电流稳压芯片 在现代电子电路设计中,对于能够满足大电流、高效率转换以及稳定电压输出的芯片需求日益增长。AH1514芯片作为一款出色的DC-DC变换器,以其独特的性能特点,在众多应用场景中展现出了卓越的优势. ### 一…

三轴云台之数字变倍功能篇

一、数字变倍的定义 数字变倍是指通过电子方式对图像进行放大或缩小的过程。与光学变焦不同,数字变焦不会改变镜头的焦距,而是通过图像处理算法对图像进行放大或缩小,从而改变图像的视野范围。 二、三轴云台数字变倍的特点 灵活性&#xff…

K8S的ingress介绍和安装ingress

1 ingress介绍 1.1 ingress架构图 1.2 ingress相关概念 ingress诞生背景: 在没有ingress之前,只能基于svc的NodePort或者LoadBalancer实现内部的pod对外访问,如果遇到多个服务要监听80端口时。 很明显无论哪种类型都无法实现,如…

无公网IP实现飞牛云手机APP远程连接飞牛云NAS管理传输文件

文章目录 前言1. 本地连接测试2. 飞牛云安装Cpolar3. 配置公网连接地址4. 飞牛云APP连接测试5. 固定APP远程地址6. 固定APP地址测试 前言 随着科技的不断发展,远程访问和控制内网设备的需求日益增加。在众多内网设备中,网络附加存储(NAS&…

第一篇:k8s架构与组件详解

没有那么多花里胡哨,直接进行一个K8s架构与组件的学习。 一、K8s架构 在Master通常上包括 kube-apiserver、etcd 存储、kube-controller-manager、cloud-controller-manager、kube-scheduler 和用于 K8s 服务的 DNS 服务器(插件)。这些对集群…

Leetcode—3001. 捕获黑皇后需要的最少移动次数【中等】

2024每日刷题(201) Leetcode—3001. 捕获黑皇后需要的最少移动次数 C实现代码 class Solution { public:int minMovesToCaptureTheQueen(int a, int b, int c, int d, int e, int f) {// 车跟皇后在同一行if(a e) {// 象是否挡在车和皇后中间return (…

visual studio2019开发过程中遇到的问题和有帮助的插件

文章目录 1. 注释中有中文导致报错2. 打开一个vs2013或者vs2010等老的项目兼容性3. LNK2019 unresolved external symbol main referenced in function __tmainCRTStartup4. image watch插件/扩展使用 1. 注释中有中文导致报错 C4819 The file contains a character that cann…

如何在PortainerCE中创建NextCloud网盘并随时随地管理文件

文章目录 前言1. 在PortainerCE中创建NextCloud容器2. 公网远程访问本地NextCloud容器2.1 内网穿透工具安装3.2 创建远程连接公网地址 3. 固定NextCloud私有云盘公网地址 前言 大家好!今天我们要来聊聊如何在本地使用Portainer CE的可视化界面创建一个属于你自己的…

各种常见生信格式文件的随机抽样

样本检验、随机生成数据、模拟用等,都需要从现有测序数据中随机抽样出一小部分数据来,按照自己需求。 0,最经典的方式: 使用awk等,只要了解各种数据格式具体的行列组成(一般是headerrecord)&a…

代码随想录算法训练营day31|56合并区间,738单调递增的数字,968监控二叉树

星海横流,岁月成碑。转眼之间,算法训练营的进程已经过半,而我也在日复一日的坚持中,找寻到了对算法的热爱。 56 合并区间 这题和前面的射爆气球等题目比较像,难度也不大,都是先按第一个元素排序后&#x…