SpringCloud组件&源码剖析:Eureka服务注册方式流程全面分析

SpringCloud组件:Eureka服务注册是采用主机名还是IP地址?

文章中我们讲到了 的几种 ,那么这几种 的源码是怎么实现的呢?我们带着这一个疑问来阅读本章内容能够让你更深入了解这块的知识点!!!

本章目标

分析每一种 源码执行流程。

构建项目

启动服务注册中心

启动本章服务项目

查看服务列表,服务注册方式

配置信息获取执行流程

在开始讲解本章 之前,我们需要了解整体的 获取的流程信息,这样才可以分析指定的 执行流程。

第一步:实例化 配置实体

在项目启动时由于依赖 内通过配置 文件来让项目启动时自动加载并实例化 配置类, 内会自动实例化 并且自动绑定 开头的配置信息(具体为什么会自动映射可以去了解下 注解作用),部分源码如下所示:

方法只有满足 表达式后才会去实例化,并且把实例化对象放入到 容器内容, 为 ,也就是方法的名称。在 方法中有这么一行代码我们可以进行下一步的分析

通过调用 构造函数来进行实例化 对象,在这个构造函数内也有一些实例化的工作,源码如下:

第二步: 获取主机基本信息

在构造函数 源码实现内 主机信息通过了 方法来进行实例化,我们来看看这个方法的具体实现逻辑,它会自动读取系统 然再进行 查询正在 状态的网卡信息,如果没有查询到网卡信息,则使用默认的 、 配置信息,源码如下所示:

默认的 、 属性配置信息在 配置实体类内,如果不进行设置则直接使用默认值,如果你想 ,那么你可以在 配置文件内通过设置 、 进行修改默认值,源码如下所示:

第三步: 方法实现

是一个 的方法,继承于 接口,该方法有个 类型的参数 来判断是否需要刷新重新获取主机网络基本信息,当传递 并且在 配置文件内并没有进行手动设置 以及 参数则会根据 设置的值进行返回信息,源码如下所示:

默认注册方式源码分析

由于在实例化 配置实体类时,构造函数进行了获取 ,默认的 以及 参数则是会直接使用 方法返回的相对应的值。

IP优先注册方式源码分析

方法直接调用本类重载方法 并且传递参数为 ,根据第三步源码我们就可以看到:

如果 参数设置了 就会返回 的值,这样我们就可以从中明白为什么主动设置 参数后需要同时设置 参数才可以生效。

指定IP、HostName源码分析

我们通过 配置文件进行设置 以及 后会直接替换原默认值,在 中也是返回的 、 所以在这里设置后会直接生效作为返回的配置值。

总结

我们通过源码进行分析 执行流程,这样在以后进行配置 、 、 三个配置信息时就可以根据优先级顺序达到预期的效果,避免没有必要的错误出现。

源码位置

本章源码已经上传到恒宇少年的 ,请结合源码进行学习,感谢阅读。

SpringBoot配套源码地址:https://gitee.com/hengboy/spring-boot-chapter

SpringCloud配套源码地址( ):https://gitee.com/hengboy/spring-cloud-chapter

与恒宇少年面对面

学习目录推荐

SpringCloud相关系列文章访问:https://www.jianshu.com/p/64e4aaada96b

SpringBoot相关系列文章请访问:http://www.jianshu.com/p/9a08417e4e84

开源信息

这段时间一直在编写开源的相关框架,致力于公司使用的框架升级以及开源计划,将公司使用到的 以及 进行升级重构并且开源。

代码生成器(Code-Builder) 代码生成器根据你提供的模板文件(目前支持 )自动生成实体类,可以很大很有效的提高开发效率。 :https://gitee.com/hengboy/code-builder :https://github.com/hengyuboy/code-builder

持久化框架(MyBatis-Enhance) 是一个对 框架的增强封装,提供一系列的内部方法来完成单表数据的操作,多表数据提供 方式进行操作。 :https://gitee.com/hengboy/mybatis-enhance :https://github.com/hengyuboy/mybatis-enhance

自动分页插件 是一款自动化分页的插件,基于 内部的插件 拦截器编写完成,拦截 的两个重载方法计算出分页的信息以及根据配置的数据库 自动执行不同的查询语句完成总数量的统计。 :https://gitee.com/hengboy/mybatis-pageable

关注公众号

欢迎微信扫码加入知识星球,恒宇少年带你走以后的技术道路!!!

知识星球 - 恒宇少年

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180926G135KH00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券