SpringCloud 注解之@EnableEurekaServer与@EnableEurekaClient原理

  • SpringCloud 版本Hoxton.SR1
  • SpringBoot 版本2.2.1.RELEASE
  • 关键字@EnableEurekaServer,@EnableEurekaClient底层实现
  • 首先SpringCloud承载于SpringBoot之上,而SpringBoot又依赖Spring相关组件,那么我们分析这些注解时势必要联想到SpringBoot和Spring之上。

1. @EnableEurekaServer

  • 我们点开注解会发现 :
    image.png
    ,@EnableXXX注解被@Import(...)修饰,我在SpringBoot专题里面启动源码解析过程中提到:容器会优先注册资源类(启动类)bean定义,bean定义解析阶段是通过 ConfigurationClassPostProcessor后置处理器处理的,对此部分知识有盲区的同学可以参考我之前的SpringBoot启动源码解析系列
    SpringBoot启动 源码深度解析(一)
    SpringBoot启动 源码深度解析(二)
    SpringBoot启动 源码深度解析(三)
    SpringBoot启动 源码深度解析(四)
    顺着解析@Import注解的思路接着往下看,我们发现导入的类是 EurekaServerMarkerConfiguration.class,点进去发现:
    image.png
    ,咋一看此类好像没有什么用处,那么此时我们看源码的时候就要从几个方面入手了:
  • 若你的英文阅读能力良好,那么我建议从注释入手,一些比较标准的框架,一般注释都会很清晰,也可以很直观的看出来当前类的功能
  • 可以 将鼠标放在类上,输入 CTRL + 鼠标左键,查看有哪些类引用了当前类
  • 一般上面两种方式可以定位到当前类的作用了,我们尝试使用第一种方式查看究竟。注释中提到了 EurekaServerAutoConfiguration类,从字面意思可以看出来当前类是个自动装配类,我们找到这个类如下:
    image.png
    ,此处又引出一个注解或者一类注解 @ConditionalOnXXX,此类注解被 Spring的条件注解@Conditional修饰,意在满足某种条件或者不存在某种条件 才会去自动装配当前类。可以看出只有存在 EurekaServerMarkerConfiguration.Marker.class类型的Bean才会去装配当前类(关于自动装配的功能,读者可以自己去查阅资料或者我后续会推出自动装配的功能解读)。
  • 此时我们就很清晰了, EurekaServerMarkerConfiguration.Marker内部类是 EurekaServerAutoConfiguration实现自动装配的必要条件,而@EnableEurekaServer中又被@Import修饰,所以标注上@EnableEurekaServer之后会触发一系列的自动装配功能,当然此注解也可以替换为任意带有@Import(EurekaServerMarkerConfiguration.class)的自定义注解。
  • 此处的@EnableEurekaServer就类似个发动机,正如 Enable名字一样,而且形如其他带有@EnableXXX的注解也都是相同的套路。

2. @EnableEurekaClient

  • 查看注解源码发现:
    image.png

    此时我们会发现,这个@EnableEurekaClient的套路咋跟@EnableEurekaServer的套路咋不一样了,世界观突然颠覆了...

  • 那我们暂时先不管套路的问题,此时发现注释里面也没有提到相关的类,只是说加上此注解之后会实现客户端的自动发现。那我们就使用另外一种方法查询哪些类包含这个注解:
    image.png
    ,卧槽 ?只有启动类引用到了,没有其他类用到... 这尼玛什么情况~
    于是查阅 spring-cloud-netflix-eureka-client-1.3.x GitHub地址 发现 1.3的 @EnableEurekaClient:
    image.png
    ,但是从之后的版本开始@EnableDiscoveryClient注解就已经被删除了,但是注释啥的都没变!!! @EnableEurekaClient还没说明白,咋又出来个@EnableDiscoveryClient,看官莫急,等我慢慢道来。
  • @EnableEurekaClient :根据官方说明是,只要classpath下包含spring-cloud-netflix-eureka-client的相关class,即可实现Eureka的自动装配。另外根据作者亲测,应用只要包含spring-cloud-netflix-eureka-client的相关class,即使不使用@EnableEurekaClient注解也可以实现客户端的注册,带上注解之后会显得更清晰,说明这是一个客户端
  • @EnableDiscoveryClient:此注解的作用更强大的地方在于,客户端自动发现,包括但不限于 Eureka注册中心,还可以发现zookeeper、console、nacos等注册中心。

结语:相信此时我们对Eureka的服务端与客户端的Enable注解驱动已经有所了解了。本篇更偏重的是服务注册与发现的原理分析,下一篇我们将继续探究Eureka服务端与Eureka客户端的具体实现细节,精确分析到每个重要的关键类甚至关键方法

  1. ☛ 文章要是勘误或者知识点说的不正确,欢迎评论,毕竟这也是作者通过阅读源码获得的知识,难免会有疏忽!
  2. 要是感觉文章对你有所帮助,不妨点个关注,或者移驾看一下作者的其他文集,也都是干活多多哦,文章也在全力更新中。
  3. 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处!
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342