@ConfigurationProperties 和 @EnableConfigurationProperties 的作用

有时候,我们希望从配置文件中获取一系列配置信息,除了使用 @Value 注解外,还有一种更好的方式,就是使用 @ConfigurationProperties 注解。

比如,假设在配置文件中存在如下 OSS 配置信息:

spring:oss:enable: truebucket-name: local

我们可以在对应的实体类上,使用 @ConfigurationProperties 注解,并指定前缀为 spring.oss,如下:

@Data
@ConfigurationProperties(prefix = "spring.oss")
public class FileProperties {private Boolean enable;/*** 默认的存储桶名称*/private String bucketName = "local";
}

这样,我们就可以很方便的获取到配置文件中的配置信息,而无需使用 @Value 注解。

但是,仅用 @ConfigurationProperties 注解,并不能将配置文件中的配置信息注入到对应的实体类中,也无法从容器中获取到对应的实体类,还需要使用
@EnableConfigurationProperties 注解,如下:

@Configuration
@EnableConfigurationProperties(FileProperties.class)
public class OssAutoConfiguration {
}

也可以在加了 @ConfigurationProperties 注解的类上加上 @Component 注解,能达到 @EnableConfigurationProperties 注解相同的效果。

之后,需要用到相关配置信息时,可直接从容器中获取:

@Component
public class OssService {@Autowiredprivate FileProperties fileProperties;
}

所以 @EnableConfigurationProperties 注解的作用是:使使用 @ConfigurationProperties 注解的类生效。

另外,如果存在嵌套的配置信息,比如:

spring:oss:enable: truebucket-name: localaliyun:endpoint: oss-cn-beijing.aliyuncs.comaccess-key: xxxsecret-key: xxxbucket-name: localregion: cn-beijing

则在实体类中,使用 @NestedConfigurationProperty 注解,如下:

@Data
@ConfigurationProperties(prefix = "spring.oss")
public class FileProperties {private Boolean enable;private String bucketName = "local";@NestedConfigurationPropertyprivate AliyunFileProperties aliyun;
}
@Data
public class AliyunFileProperties {private String endpoint;private String accessKey;private String secretKey;private String bucketName;private String region;
}

参考:关与 @EnableConfigurationProperties 注解

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

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

相关文章

秒杀系统

前言 秒杀大家都不陌生。自2011年首次出现以来,无论是双十一购物还是 12306 抢票,秒杀场景已随处可见。简单来说,秒杀就是在同一时刻大量请求争抢购买同一商品并完成交易的过程。从架构视角来看,秒杀系统本质是一个高性能、高一致、高可用的三高系统。而打造并维护一个超大…

.NET周刊【11月第4期 2024-11-24】

国内文章 C# 入门深度学习:万字长文讲解微积分和梯度下降 https://www.cnblogs.com/whuanle/p/18551532 这篇文章主要介绍了使用 C# 进行深度学习的方法,特别是微积分在此领域的应用。作者简要讲解了极限、导数等基本概念,并展示了如何在 C# 中实现这些数学运算,例如将一个…

高级程序语言第九次作业

这个作业属于哪个课程:https://edu.cnblogs.com/campus/fzu/2024C 这个作业要求在哪里:https://edu.cnblogs.com/campus/fzu/2024C/homework/13311 学号:102400204 姓名:刘嘉奕不太理解10题a,b两个题目的要求有何不同,一个把值返回该结构,不运用指针,而b要把值赋给合适…

DataSophon集成StreamPark2.1.5

为DataSophon制作streampark-2.1.5安装包.md 下载并解压streampark 2.1.5安装包 StreamPark官网下载 wget -O /opt/datasophon/DDP/packages/apache-streampark_2.12-2.1.5-incubating-bin.tar.gz https://www.apache.org/dyn/closer.lua/incubator/streampark/2.1.5/apache-s…

以Deformable_DETR为例说明训练过程

以Deformable_DETR为例说明使用服务器训练过程 下载程序文件 根据论文提供的github地址fundamentalvision/Deformable-DETR: Deformable DETR: Deformable Transformers for End-to-End Object Detection.下载zip到本地 租用服务器 在autodl平台租用服务器,申请账号氪金之后去…

Qt VTK加载openfoam计算结果

Qt VTK加载openfoam计算结果.foam文件。#include <QApplication> #include <QDebug> #include "qvtkopenglwidget.h" #include <vtkSmartPointer.h> #include <vtkGenericDataObjectReader.h> #include <vtkPolyDataMapper.h> #includ…

蓝桥3511飞机降落

样例输入 2 3 0 100 10 10 10 10 0 2 20 3 0 10 20 10 10 20 20 10 20 样例输出 YES NO思路: 具体来说,对于每架飞机,有起飞时间(t)、降落时间限制(d)和飞行时长(l)等信息,代码要判断能否按照一定规则安排这些飞机的起降顺序,使得所有飞机都能在其降落时间限制内完成…

多校A层冲刺NOIP2024模拟赛27终结篇

不知道是不是我打的最后一场模拟赛了,记录一下吧,总体来说还不错,虽然 \(T1\) 方案数求错爆零了,但 \(T3\) 场切了,暴力打满的话有265,希望 \(NOIP\) 时也可以不让自己遗憾吧。 A 【模板】分治FFT 考虑每加进来一个数的贡献 \(x_1*x_2+(x_1+x_2)*x_3+...=x_1*x_2+x_1*x_3…

elasticseach-head插件

git地址 https://github.com/mobz/elasticsearch-head 安装方式 浏览器插件 docker本地安装

支持超线程的numa架构

支持超线程的numa架构 物理硬件视角,将多个CPU封装在一起,这个封装被称为插槽Socket; Core是socket上独立的硬件单元; 通过intel的超线程HT技术进一步提升CPU的处理能力,OS看到的逻辑上的核Processor的数量。每个硬件线程都可以按逻辑cpu寻址,因此这个处理器看上去有八块…

schoolcms代码审计

sql注入 注入点:burp的数据包: POST /index.php?m=Admin&c=Article&a=Delete HTTP/1.1 Host: schoolcms Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.6422.112 Safa…