当前位置: 首页 > news >正文

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.lryc.cn/news/140862.html

相关文章:

  • 三次握手四次挥手之全连接半连接队列
  • Racknerd便宜高性价比服务器汇总
  • JavaScript 基础知识回顾与复习---关于this
  • Lua之Lua源文件批量转换为luac字节码文件
  • 简历V1.0问题合集 8/25-26
  • P1052 [NOIP2005 提高组] 过河
  • ArrayList和Vector及LinkedList的区别
  • HVV爆火漏洞:最新 WPS RCE (远程命令执行) 复现
  • 我的128天创作纪念日-东离与糖宝
  • 卷积神经网络——下篇【深度学习】【PyTorch】【d2l】
  • cas md5加密
  • [管理与领导-51]:IT基层管理者 - 8项核心技能 - 6 - 流程
  • 天翼物联、汕头电信与汕头大学共建新一代信息技术与数字创新(物联网)联合实验室
  • Failed to load local image resource/images/1.jpg无法加载本地图片资源
  • Go和Java实现责任链模式
  • C#+GDAL影像处理笔记08:生成DEM的图阔范围线
  • 敏捷研发管理软件及敏捷管理流程
  • Mac OS 13.4.1 搜狗输入法导致的卡顿问题
  • vue 简单实验 自定义组件 局部注册
  • Resnet模型详解
  • AI 绘画Stable Diffusion 研究(十六)SD Hypernetwork详解
  • 2023.8 -java - 继承
  • 前端面试:【移动端开发】PWA、Hybrid App和Native App的比较
  • picGo+gitee+typora设置图床
  • [JavaWeb]【十三】web后端开发-原理篇
  • 服务注册中心 Eureka
  • SpringIoC组件的高级特性
  • Linux--进程地址空间
  • ISIS路由协议
  • 论文解读:Bert原理深入浅出