前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >看源码,我为什么建议你先从 SpringBoot 开始

看源码,我为什么建议你先从 SpringBoot 开始

作者头像
业余草
发布2019-04-17 14:30:46
1.8K0
发布2019-04-17 14:30:46
举报
文章被收录于专栏:业余草

第一时间获取技术干货和业界资讯!

640?wx_fmt=png
640?wx_fmt=png
640?wx_fmt=png
640?wx_fmt=png

在面试过程中,很多面试官都会或多或少的问你,有没有看过源码?

如果你回答,没有!那就换其他问题。但是如果你工作时间比较长了,比如 3 年了。但你还没有看过一些框架的源码,那么很可能你就被 pass 掉了。

面对这种情况,你该怎么办?

必须的先看几套啊。唬住了就 50K,唬不住就只能 5K 了。

那么看几套,行啊,我也看了,但是看不懂啊,无存下手。哎,那么这个时候,我推荐你先从 SpringBoot 的源码开始看起。为什么呢?原因有以下 3 点:

  1. 热门。SpringBoot 有多热门,我相信大家比我都清楚吧。你和她相处的时间甚至比和你女朋友相处的时间要长。
  2. 主流程复杂度不大。SpringBoot 的主流程非常的简单。猜透这个框架的原理和设计思路比猜对女孩子的心思简直简单太多了!
  3. 面试必问。像 if else 这种"坦诚相待"的代码面试根本没人问,相反像 SpringBoot 这样做了大量自动配置的"犹抱琵琶半遮面"的设计面试总是一上来就要把原理扒个精光。

所以,为了高薪。我们就要卧薪尝胆。

主流程不复杂?嗯,真不复杂,不行我给你简单的解释一下。

第一步,从 @SpringBootApplication 开始。

640?wx_fmt=png
640?wx_fmt=png

第二步,看 @SpringBootApplication 注解类。

640?wx_fmt=png
640?wx_fmt=png

第三步,看 @EnableAutoConfiguration 注解类。

640?wx_fmt=png
640?wx_fmt=png

第四步,看 EnableAutoConfigurationImportSelector 类。

640?wx_fmt=png
640?wx_fmt=png

第五步,看 AutoConfigurationImportSelector 类中的 selectImports 和 getCandidateConfigurations 方法。

640?wx_fmt=png
640?wx_fmt=png

第六步,SpringFactoriesLoader 类的 loadFactoryNames 方法。

640?wx_fmt=png
640?wx_fmt=png

重点看这个 FACTORIES_RESOURCE_LOCATION 。

640?wx_fmt=png
640?wx_fmt=png

以 spring-boot-autoconfigure-1.5.13.RELEASE.jar 为例,看下它的 META-INF/spring.factories 文件。

640?wx_fmt=png
640?wx_fmt=png

到此整个 SpringBoot 的自动配置,自动加载主流程源码已经看完了。

整个过程,总结一下就是你把你的组件的全类名给我,我帮你初始化你给我的这些 bean。

这个过程我在啰嗦一下,流程如下:

  • 启动 main 函数,加载 @SpringBootApplication。
  • @SpringBootApplication 会拿到 META-INF/spring.factories 中需要自动配置的类的全名。
  • 把自动配置的类全名放入 ImportSelector 中,从而创建了自动配置类,根据自动配置类中的逻辑,进行相应的自动配置。

最后,整理了一张图。送给大家!

640
640

自己放大了,慢慢看。SpringBoot 的自动配置和原理就是这么简单,所以,我推荐你先把它看明白了。让本该造火箭的你,不再拧螺丝!后面的有 SpringMVC 和 SpringBoot 的脑图,预计下周画好分享出来!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019年04月05日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档