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.mzph.cn/news/59747.shtml

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

相关文章

大数据之linux入门

一、linux是什么 linux操作系统 开发者是林纳斯-托瓦兹,出于个人爱好编写。linux是一个基于posix和unix的多用户、多任务、支持多线程和多CPU的操作系统。 Unix是20世纪70年代初出现的一个操作系统,除了作为网络操作系统之外,还可以作为单…

安全测试基础知识

软件安全测试是评估和测试系统以发现系统及其数据的安全风险和漏洞的过程。没有通用术语,但出于我们的目的,我们将评估定义为分析和发现漏洞,而不尝试实际利用这些漏洞。我们将测试定义为发现和尝试利用漏洞。 安全测试通常根据要测试的漏洞…

vue2 组件库之vetur提示

当我们开发完自定义UI组件库后,在项目中使用时,想要达到以下提示效果,组件提示与属性提示,有什么解决方案呢: 事实上,这是vetur的功能,原文如下: Component Data | Vetur If a pac…

机器学习笔记 - 数据科学中基于 Scikit-Learn、Tensorflow、Pandas 和 Scipy的7种最常用的特征工程技术

一、概述 特征工程描述了制定相关特征的过程,这些特征尽可能准确地描述底层数据科学问题,并使算法能够理解和学习模式。换句话说:您提供的特征可作为将您自己对世界的理解和知识传达给模型的一种方式。 每个特征描述一种信息“片段”。这些部分的总和允许算法得出有关目标变…

idea中创建springboot项目显示Spring Initializr Error

很长时间不创建springboot项目了,今天发现创建完成idea显示: Spring Initializr Error error:status:500项目中没有pom.xml文件.检查了一下原因是在创建的时候类型没有创建正确(之前记得都是默认),默认如下 需要选择创建maven完整工程那种,最下面那种只会生成pom.xml不会…

【计算机组成原理】一文快速入门,很适合JAVA后端看

作者简介: CSDN内容合伙人、CSDN新星计划导师、JAVA领域优质创作者、阿里云专家博主,计算机科班出身、多年IT从业经验、精通计算机核心理论、Java SE、Java EE、数据库、中间件、分布式技术,参加过国产中间件的核心研发,对后端有…

Vscode漂亮配色方案

有需要的私自,付费

云原生简介 (Cloud Native)

云原生(cloud Native) 云原生的概念诞生于10年前,netflix 在 AWS 上的一次演讲中。有趣的是当初没有明确的定义,现在也没有明确的定义,对不同的人来说,有不同的概念。 概念 云原生:是在云上构…

热烈祝贺蜀益表面处理成功入选航天系统采购供应商库

经过航天系统采购平台的严审,眉山市蜀益表面处理科技有限公司成功入选中国航天系统采购供应商库。航天系统采购平台是航天系统内企业采购专用平台,服务航天全球范围千亿采购需求,目前,已有华为、三一重工、格力电器、科大讯飞等企…

香橙派OrangePi zero H2+ 驱动移远4G/5G模块

目录 1 安装系统和内核文件: 1.1 下载镜像 1.2 内核头安装 1.2.1 下载内核 1.2.2 将内核头文件导入开发板中 1.2.3 安装内核头 2 安装依赖工具: 2.1 Installing Required Host Utilities 3 驱动步骤: 3.1 下载模块驱动文件…

STM32注入通道

什么是注入通道? 注入通道是ADC的一种采样方式,主要用于在规则通道转换期间并行处理快速变化信号的采样。注入通道的转换可以在规则通道转换时强行插入,相当于一个“中断通道”。当有注入通道需要转换时,规则通道的转换会停止,优先执行注入通道的转换,当注入通道的转换执…

Android Glide preload RecyclerView切入后台不可见再切换可见只加载当前视野可见区域item图片,Kotlin

Android Glide preload RecyclerView切入后台不可见再切换可见只加载当前视野可见区域item图片&#xff0c;Kotlin <uses-permission android:name"android.permission.READ_EXTERNAL_STORAGE" /><uses-permission android:name"android.permission.RE…

Go 数组

数组用于在单个变量中存储相同类型的多个值&#xff0c;而不是为每个值声明单独的变量。 声明数组 在Go中&#xff0c;有两种声明数组的方式&#xff1a; 使用var关键字&#xff1a; 语法 var array_name [length]datatype{values} // 这里定义了长度 或者 var array_n…

C++中的运算符总结(6):移位运算符

C中的运算符总结&#xff08;6&#xff09;&#xff1a;移位运算符 10、按位右移运算符&#xff08; >>&#xff09;和左移运算符&#xff08; <<&#xff09; 移位运算符将整个位序列向左或向右移动&#xff0c;其用途之一是将数据乘以或除以 2 n 2^n 2n。 下…

算法-图BFS/DFS-单词接龙

算法-图BFS/DFS-单词接龙 1 题目概述 1.1 题目出处 https://leetcode-cn.com/problems/number-of-islands 1.2 题目描述 给定两个单词&#xff08;beginWord 和 endWord&#xff09;和一个字典&#xff0c;找到从 beginWord 到 endWord 的最短转换序列的长度。转换需遵循如…

C++八股记录

C内存管理 C中&#xff0c;内存分成5个区。 栈&#xff1a;函数内局部变量&#xff1b;自动管理&#xff0c;效率高&#xff0c;但空间较小&#xff1b; 堆&#xff1a;new分配的内存块&#xff1b;手动管理&#xff0c;效率低&#xff0c;但空间大&#xff1b; 自由存储区&…

Linux 常用命令大全

一、基本操作命令 //------首先先来几个热键&#xff0c;非常方便&#xff0c;一定要记住------// Tab ------按键—命令补齐功能Ctrlc ------按键—停掉正在运行的程序Ctrld ------按键—相当于exit&#xff0c;退出Ctrll ------按键—清屏 1.1 关机和重启 1. 关机命令&am…

弯道超车必做好题集锦三(C语言选择题)

前言&#xff1a; 编程想要学的好&#xff0c;刷题少不了&#xff0c;我们不仅要多刷题&#xff0c;还要刷好题&#xff01;为此我开启了一个弯道超车必做好题锦集的系列&#xff0c;每篇大约10题左右。此为第三篇选择题篇&#xff0c;该系列会不定期更新&#xff0c;后续还会…

全面解析MES系统中的报工操作

一、报工操作的定义&#xff1a; 报工操作是指在生产过程中&#xff0c;操作员通过MES系统记录和提交生产工序的相关信息&#xff0c;如工时、产量、质量等。报工操作将生产过程中的实际情况反馈给MES系统&#xff0c;实现生产数据的实时采集和记录。 二、报工操作的流程&…

MacOS goland go1.21 debug问题

安装dlv brew install dlv 安装之后在终端会显示所在目录 类似/usr/local/Cellar/delve/1.21.0/bin 配置goland 在文件系统中找到goland 右击选择show package contents -> Contents -> plugins -> go 尝试替换 其中对应系统 的 dlv 结果还是不行 然后打开应用gol…