看得懂系列:Eureka Server 面向接口的方式读取配置文件

简介: 大家好,我是指北君。PS:最近是跳槽的高峰期,我连日加班好多天,整理出了包含16000 多道面试题的面试宝典,并且指北君也会持续更新这份面试宝典中的题目,希望它能帮助大家找到自己心仪的工作!

eureka sersver 配置环境

在上一篇中已经介绍了,spring boot 是调用 类的 方法启动 Eureka Server 的。

20.png

初始化环境和加载配置文件在方法 initEurekaEnvironment 方法中,一起来看看吧。

21.png

  1. ConfigurationManager 的创建会加载一堆 config,这里不需要去看这一块。
  2. 单例模式其实有很多种,如:饿汉模式、懒汉模式、双重校验锁、静态内部类、枚举等实现方式,这里 getConfigInstance() 方法用的是 volatile + synchronized + double check 双重校验锁模式。
  3. 最后获取 eureka server 的运行环境,没有配置运行环境就用 test 环境。如读取配置文件用:eureka-server-test.properties

面向接口

EurekaServerConfig 接口

initEurekaServerContext() 方法用于加载 Eureka Server 上下文。这个方法很长,先说他的第一行代码:

22.png

这行代码创建了一个 EurekaServerConfig 对象。EurekaServerConfig 是一个接口。定义了许多配置项的方法。

23.jpg

这个类的作用就是,如果以后需要用到配置文件里面的数据只要:eurekaServerConfig.getXXX() 就能获取,而不是像平常使用的 Properties。

DefaultEurekaServerConfig 默认实现类

24.png

DefaultEurekaServerConfig 是 eurekaServerConfig 的默认实现类。


init()

init() 的前面两行是设置环境的名称。

25.png

EUREKA_PROPS_FILE 的定义是用单例工厂模式获取 eureka.server.props 的值,默认值是:eureka-server。

26.png

loadCascadedPropertiesFromResources() 方法是用来加载配置文件的。

首先会在 ConfigurationManager.loadCascadedProperties() 方法里面加载 eureka-server.props 配置文件

27.png

然后再加载 configName + "-" + environment + ".properties" 的配置文件。并且下面的配置文件会覆盖上面的配置文件

28.png

最后将配置文件交给了 ConfigurationManager 管理。

eureka.server.properties

eureka.server.properties 的作用就是为配置文件里面的各个选项搞一个默认值。但是它是一个空文件。

29.jpg

回过头来看 DefaultEurekaServerConfig,它才是真正的默认实现的地方。


30.jpg

总结

  1. initEurekaEnvironment() 是读取环境,为下面的加载配置文件做准备。
  2. DefaultEurekaServerConfig 类是 EurekaServerConfig 接口的默认实现,里面就是默认的配置项。
  3. DefaultEurekaServerConfig 的init() 方法先读取 eureka-server.props 后读取 eureka-server-test.properties 配置文件。

面试大全包括:包括 Java 集合、JVM、多线程、并发编程、设计模式、SpringBoot、SpringCloud、Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、MongoDB、Redis、MySQL、RabbitMQ、Kafka、Linux、Netty、Tomcat、Python、HTML、CSS、Vue、React、JavaScript、Android 大数据、阿里巴巴等大厂面试题等、等技术栈!

相关文章
在使用SSH+Spring开发webservice ,报的一些异常及处理方法
在使用SSH+Spring开发webservice ,报的一些异常及处理方法
255 0
在使用SSH+Spring开发webservice ,报的一些异常及处理方法
|
NoSQL Java Linux
springboot 中spring-data-redis报错:远程主机强迫关闭了一个现有的连接,如何解决?
springboot 中spring-data-redis报错:远程主机强迫关闭了一个现有的连接,如何解决?
springboot 中spring-data-redis报错:远程主机强迫关闭了一个现有的连接,如何解决?
|
5月前
|
设计模式 Java 关系型数据库
Spring的配置文件,如何配置端口号,,properties,yml获取配置项等方法,外观模式及其优缺点,日志代表的信息
Spring的配置文件,如何配置端口号,,properties,yml获取配置项等方法,外观模式及其优缺点,日志代表的信息
|
5月前
|
Java
SpringBoot配置-配置文件分类,server.port修改端口,自定义修改配置内容
SpringBoot配置-配置文件分类,server.port修改端口,自定义修改配置内容
|
Java
SpringCloud源码剖析-Eureka Server的自动配置
这里和EureakClientAutoConfiguration差不多,都是由主启动类上的@SpringBootApplication标签中的@EnableAutoConfiguration启动自动配置,通过AutoConfigurationImportSelector来扫描classpath下的starter包中的自动配置类
60 0
十一.SpringCloud源码剖析-Eureka Server服务注册表拉取
这一章我们来分析一下Eureka Server 服务注册表的拉取流程,请结合《[Eureka Client服务发现](https://blog.csdn.net/u014494148/article/details/108217656)》
|
Java Spring 容器
SpringBoot中是如何创建WebServer的?
SpringBoot中是如何创建WebServer的?
165 0
|
存储 缓存 算法
八.SpringCloud源码剖析-Eureka Server初始化流程
上一章我们分析了一下EureakServer的自动配置,这章节我们来详细分析一下Eureak Server中的核心组件以及初始化流程
八.SpringCloud源码剖析-Eureka Server初始化流程
七.SpringCloud源码剖析-Eureka Server的自动配置
前面的章节我们针对于Eureak Client的初始化 ,服务注册 ,服务发现,服务续约,取消注册功能进行了分析,接下来我们围绕Eureka的核心功能对Server端进行分析,本章将会分析Eureka Server的启动过程。
七.SpringCloud源码剖析-Eureka Server的自动配置
|
缓存 API
十二.SpringCloud源码剖析-Eureka Server服务剔除
这一章我们来分析一下Eureka Server 的服务剔除
十二.SpringCloud源码剖析-Eureka Server服务剔除