SpringCloud学习笔记(九)_使用Java类加载SpringBoot、SpringCloud配置文件

我们都知道平常在使用SpringBoot和SpringCloud的时候,如果需要加载一两个配置文件的话我们通常使用@Value(“${属性名称}”)注解去加载。但是如果配置文件属性特别多的时候使用这种方式就显得特别的不友好了。

比如说,我们要加载下方这个名为application.yml的配置文件。

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  

|

kafka:  brokerAddress: 110.35.113.62:9092,123.27.143.72:9095,180.17.133.52:9096  smsTopic: testTopic  smsCosumeGroup: testTopicGroup  timerTaskTopic: timerTopic  timerTaskGroup: timerGroup  jvmNumbers: 3  security:  authentication:  jwt:  secret: 0550224055e1848081dba46d8ad325f503fa141b  tokenValidityInSeconds: 86400  

—|—

此时我们有两种方式来简化这个加载方式

1

这种方式呢,是同过层层嵌套的方式一层一层的按照配置文件属性的方式来进行注入的。大家只要把这个类跟上方提供的配置文件进行对比就会明白它的方式了。(注意,下方的所有属性因为篇幅问题没有增加get、set方法,实际使用过程中请自行添加)

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
32  
33  
34  
35  

|

@ConfigurationProperties(prefix = "application", ignoreUnknownFields = false)  
public class ApplicationProperties1 {  private final Security security = new Security();  private final Kafka kafka = new Kafka();  public static class Kafka {  private String brokerAddress;  private String smsTopic;  private String smsCosumeGroup;  private String timerTaskTopic;  private String timerTaskGroup;  private String jvmNumbers;  }  public static class Security {  private final Authentication authentication = new Authentication();  public static class Authentication {  private final Jwt jwt = new Jwt();  public static class Jwt {  private String secret;  private long tokenValidityInSeconds;  }  }  }  }  

—|—

2

这种方式就是以指定的配置前缀为依据去取配置(同上没有写get、set方法)

例如:kafka的配置可以这样来

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  

|

@Configuration  
@ConfigurationProperties(prefix = "kafka",ignoreUnknownFields = false)  
@PropertySource(value = { "classpath:application.yml" },ignoreResourceNotFound=false)  
public class ApplicationProperties {  private String brokerAddress;  private String smsTopic;  private String smsCosumeGroup;  private String timerTaskTopic;  private String timerTaskGroup;  private String jvmNumbers;  
}  

—|—

而Security的配置这样来

1  
2  
3  
4  
5  
6  
7  
8  
9  

|

@Configuration  
@ConfigurationProperties(prefix = "security.authentication.jwt",ignoreUnknownFields = false)  
@PropertySource(value = { "classpath:application.yml" },ignoreResourceNotFound=false)  
public class ApplicationProperties {  private String secret;  private long tokenValidityInSeconds;  
}  

—|—

补充

大家可能会注意到我上方的几个类中都没有写get和set方法,因为那个东西其实所占的篇幅实在是太长了。那么,有什么办法可以补救么,其实是有办法的,一个注解就可以全搞定哟。

什么?你不信,不信来看看呀:IDEA中使用lombok插件

结语

怎么样,学会这个以后Leader还会担心你的代码臃肿么。

本文出自http://zhixiang.org.cn,转载请保留。

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

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

相关文章

C# 使用NPOI操作EXCEL

1.添加NOPI 引用->管理NuGet程序包->添加NOPI 2.相关程序集 3.添加命名空间 using NPOI.HSSF; using NPOI.XSSF; using System.IO; using NPOI.XSSF.UserModel; using NPOI.HSSF.UserModel; 4.样例 //NPOI读入dgv private void button1_Click(object sender, EventArgs…

【详解】文本检测OCR模型的评价指标

关于文本检测OCR模型的评价指标 前言:网上关于评价标准乱七八糟的,有关于单词的,有关于段落的,似乎没见过谁解释一下常见论文中常用的评价指标具体是怎么计算的,比如DBNet,比如RCNN,这似乎好像…

GIT 常用指令

基础指令 $ git init #初始化仓库,在该文件夹创建的为workspace$ git add . #已暂存 [.通配符,全部添加]$ git commit -m "log add file" #提交到仓库,并写了日志 ”log add file“$ git status #查看状态,可查看被修改的文件…

React 使用 useRef() 获取循环中所有子组件实例

目录 背景思考实现完整代码:成功运行后的界面如下: 知识点总结uesRef() 作对象处理useImperativeHandle() 父组件操作引入子组件的内部方法最后 背景 之前项目中使用了antd pro 中的 可编辑表格 (EditableProTable),在页面中表格要经过多层遍…

MyBatis与Spring整合以及AOP和PageHelper分页插件整合

目录 前言 一、MyBatis与Spring整合的好处以及两者之间的关系 1.好处 2.关系 二、MyBatis和Spring集成 1.导入pom.xml 2.编写配置文件 3.利用mybatis逆向工程生成模型层代码 三、常用注解 四、AOP整合pageHelper分页插件 创建一个切面 测试 前言 MyBatis是一个开源的…

Python 合并多个 PDF 文件并建立书签目录

今天在用 WPS 的 PDF 工具合并多个文件的时候,非常不给力,居然卡死了好几次,什么毛病?! 心里想,就这么点儿功能,居然收了我会员费都实现不了?不是吧…… 只能自己来了,…

基于Java+SpringBoot+Vue前后端分离医院后台管理系统设计和实现

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

AI自动驾驶也“区分人种”?有色人种和儿童面临更高碰撞风险

8月27日消息,随着人工智能(AI)的快速发展,尤其是在自动驾驶汽车领域,这项技术给人类带来了巨大的便利。 然而,据最新的研究发现,自动驾驶汽车中的行人检测软件可能存在一些严重问题,…

2023泉城杯 easy_log的解题

压缩包解压里面是一个 access.log 日志文件。 捋数据 进行过远程命令执行 这个后续没啥用 可疑字符串 可疑字符串/upload/ma.php?logvar_dump(%27cGFzc3dvcmQ6IHNAZncjdiVmOQ%27);这个首先就判断是不是base64编码(英文大小写、数字和、/)以及用作后缀…

tomcat高可用和nginx高可用

tomcat高可用和nginx高可用 小白教程,一看就会,一做就成。 1.什么是高可用? 高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务…

视频集中存储/云存储平台EasyCVR国标GB28181协议接入的报文交互数据包分析

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。视频汇聚融合管理…

变量函数及销毁函数中的变量-PHP8知识详解

今天分享php8知识详解中的变量函数及销毁函数中的变量,以及相应的示例代码。 1、变量函数 变量函数,是指通过变量来访问的函数。当变量后有圆括号时,PHP将自动寻找与变量的值同名的函数,然后执行该函数。 变量函数引用&#xf…

线性代数的本质笔记(3B1B课程)

文章目录 前言向量矩阵行列式线性方程非方阵点积叉积基变换特征向量与特征值抽象向量空间 前言 最近在复习线代,李永乐的基础课我刷了一下,感觉讲的不够透彻,和我当年学线代的感觉一样,就是不够形象。 比如,行列式为…

Linux监控基础命令

Linux资源监控 一.资源监控常用命令汇总 内存:top、free、vmstat、pmap I/O:vmstat、sar CPU:top、vmstat、mpstat、iostat 二.监控命令 日常检测使用top和free就足够了,如果要对系统进行日常监控可以使用zabbix或者prometh…

OLED透明屏曲面技术:创新突破引领显示行业未来

OLED透明屏曲面技术作为一项重要的显示技术创新,正在成为显示行业的焦点,其引人注目的优势和广泛应用领域使其备受关注。 本文将详细介绍OLED透明屏曲面技术的优势、应用领域以及市场前景,同时展望其未来的发展趋势,以期带给读者…

1.linux的常用命令

目录 一、Linux入门 二、Linux文件系统目录 三、Linux的vi和vim的使用 四、Linux的关机、重启、注销 四、Linux的用户管理 五、Linux的运行级别 六、Linux的文件目录指令 七、Linux的时间日期指令 八、Linux的压缩和解压类指令 九、Linux的搜索查找指令 ​​​​​​…

创建型模式-建造者模式

使用多个简单的对象一步一步构建成一个复杂的对象 主要解决:主要解决在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部…

Python3 字符串

Python3 字符串 字符串是 Python 中最常用的数据类型。我们可以使用引号( 或 " )来创建字符串。 创建字符串很简单,只要为变量分配一个值即可。例如: var1 Hello World! var2 "Runoob" Python 访问字符串中的值 Python 不支持单字…

学习设计模式之享元模式,但是宝可梦

前言 作者在准备秋招中,学习设计模式,做点小笔记,用宝可梦为场景举例,有错误欢迎指出。 享元模式 1 介绍 享元模式很好理解,它主要是为了减少创建对象的数量,属于结构型设计模式 目的:减少…

DDR与PCIe:高性能SoC的双引擎

SoC芯片无处不在,小到家电控制的MCU,大到手机芯片,我们都会接触到。如今大部分芯片设计公司都在开发SoC芯片,一颗SoC芯片可以集成越来越多的功能,俨然它已成为IC设计业界的焦点。 高性能、高速、高带宽的互联和存储的…