1.解读源码的意义:

为什么要解读源代码?直接使用别人封装好的框架不香吗?答案如下:

随着互联网的快速发展,加上java跨平台等强大特性,导致java程序员需求日益剧增,很多高校、培训机构都为了填补市场需求,大批量的培养java程序员,导致很多java程序员只知其然,不知其所以然。java程序员有种饱和的趋势!!!  加上疫情的原因,很多中小型公司的收入大幅下降,他们可能选择缩招或者裁员,很多只会写增删改查、只会调用api接口、只会使用框架对其原理不深入的java程序员都会面临淘汰的趋势!! 解读源码的能力成为了一种java程序员的一种优势以及能力体现!!! 

 解读源代码的意义如下:

(1)能够帮你快速精准的定位到bug出现的原因,节省你找错误解决方案的时间以及减少遇到bug时的迷茫与无所适从,这些迷茫与无所适从非常让人有挫败感,一旦这些挫败感积累到一定程度就会让人拥有放弃的冲动!!!!!

(2)提高你面试谈资的资本!!

(3)提高你学习的能力!!很多公司为了加快开发速度、减少时间成本,都会自己封装一些技术,很多时候你去一家公司工作的第一件事就是阅读公司的源代码,当你拥有源代码的阅读经历与经验,加上公司技术大佬的指点,你就能快速上手,同样也加快你学习别的框架的速度和阅读别的框架源代码的速度!

(4)提升你个人的竞争力!!   相比于只会使用别人的框架的java程序员,那些掌握框架底层原理的java程序员更加吃香!! 企业能够减少培养成本,加快开发速度进而加快产品上线速度获得市场!!   掌握框架底层原理的java程序员能够走的更加远,因为他们了解框架的底层原理,学习了大佬们的优秀设计思想,抓住核心的部分,能追上技术的潮流并且保持源源不断的学习力,对他们将来往高层的发展以及薪资的提升具有重要意义!!!

2.源码解读:

springboot:2.3.2 源代码由以下部分组成 :

(1)springboot启动类

(2)springboot自动装配

3.springboot启动类

(1)@SpringBootApplication :用来标注哪个类是启动类

(2)SpringApplication.run(xxxx.class, args) : 启动@SpringBootApplication 注解下的类

4.springboot自动装配

点开@SpringBootApplication,你会发现由两部分组成:

(1)@SpringBootConfiguration:用来表明这是springboot的配置类

@Configuration:表明这是配置类

@Component: 表明配置类也是一个组件

(2)@EnableAutoConfiguration:  用来表面开启自动配置

@AutoConfigurationPackage: 自动配置包

@Import({Registrar.class}) :   导入组件

AutoConfigurationPackages .register :   获取主配置类(@springbootApplication标注的类)所在的包,并把这个包里所有的组件扫描到spring容器中

@Import({AutoConfigurationImportSelector.class}) : 告诉容器导入什么组件 

getAutoConfigurationEntry:获取自动配置的实体

getCandidateConfigurations:获取候选配置

SpringFactoriesLoader . loadFactoryNames(getSpringFactoriesLoaderFactoryClass(),getBeanClassLoader()): 加载指定的factoryClass并进行实例化。

SpringFactoriesLoader . loadSpringFactories :    加载指定的factoryClass。

classLoader.getResources("META-INF/spring.factories") //从META-INF/spring.factories中获取资源

ClassLoader.getSystemResources("META-INF/spring.factories") //从META-INF/spring.factories中获取资源

5.总结

(1)springboot启动类 

  ①判断项目是普通的java项目还是web项目 

  ②查找并加载所有可用初始化器,设置到initializers属性中

  ③找出所有的应用程序监听器,设置到listeners属性中 

  ④推断并设置main方法的定义类,找到运行的主类。

(2)springboot自动装配

springboot所有自动配置都是在启动的时候扫描并加载:/META-INF/spring.factories,同时获取EnableAutoConfiguration指定的值,所有的自动配置类都在这里面,但是不一定生效,需要判断条件是否成立,只要导入对应的start,就能启动对应的自动装配,配置就能成功!!

  ①springboot在启动的时候,从类路径/META-INF/spring.factories获取指定的值

# Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.springframework.boot.autoconfigure.admin.SpringApplicationAdminJmxAutoConfiguration,\
org.springframework.boot.autoconfigure.aop.AopAutoConfiguration,\
org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration,\
org.springframework.boot.autoconfigure.batch.BatchAutoConfiguration,\
org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration,\
org.springframework.boot.autoconfigure.cassandra.CassandraAutoConfiguration,\
org.springframework.boot.autoconfigure.context.ConfigurationPropertiesAutoConfiguration,\
org.springframework.boot.autoconfigure.context.LifecycleAutoConfiguration,\
org.springframework.boot.autoconfigure.context.MessageSourceAutoConfiguration,\.....

  ②将这些自动配置的类导入容器,自动配置就会生效,帮我们自动配置

  ③xxxxAutoConfiguration:  自动配置类,  xxxxProperties: 封装配置文件相关属性 

举个例子: 搜索 RedisAutoConfiguration

自己可以选择在application.properites文件配置相关属性

Springboot源码解读相关推荐

  1. logback源码解读笔记(springboot)

    logback源码解读笔记(springboot) 一.Logfactory初始化 StaticLoggerBinder的初始化 二.springboot与logback整合 三.logger的执行与 ...

  2. Spring5源码 - 05 invokeBeanFactoryPostProcessors 源码解读_3细说invokeBeanDefinitionRegistryPostProcessors

    文章目录 Pre 细说invokeBeanDefinitionRegistryPostProcessors 流程图 源码分析 解析配置类 parser.parse(candidates) 配置类注册到 ...

  3. KClient——kafka消息中间件源码解读

    目录 kclient消息中间件 kclient-processor top.ninwoo.kclient.app.KClientApplication top.ninwoo.kclient.app.K ...

  4. SpringBoot源码分析(二)之自动装配demo

    SpringBoot源码分析(二)之自动装配demo 文章目录 SpringBoot源码分析(二)之自动装配demo 前言 一.创建RedissonTemplate的Maven服务 二.创建测试服务 ...

  5. spring源码解读系列(八):观察者模式--spring监听器详解

    一.前言 在前面的文章spring源码解读系列(七)中,我们继续剖析了spring的核心refresh()方法中的registerBeanPostProcessors(beanFactory)(完成B ...

  6. 【赠书福利】掘金爆火小册同名《Spring Boot源码解读与原理剖析》正式出书了!...

    关注我们丨文末赠书 承载着作者的厚望,掘金爆火小册同名读物<Spring Boot源码解读与原理剖析>正式出书! 本书前身是掘金社区销量TOP的小册--<Spring Boot源码解 ...

  7. Elasticsearch 7.X Ik源码解读,及自定义远程动态词库

    一.ik 远程词库 上篇文章对ik进行了整体的讲解,包括远程动态词库的讲解,但是上篇文章中是基于nginx+静态txt文件实现的,利用nginx 对文件修改后自动添加Last-Modified 的属性 ...

  8. 实战:Spring Boot源码解读与原理分析

    承载着作者的厚望,掘金爆火小册同名读物<Spring Boot源码解读与原理剖析>正式出书! 本书前身是掘金社区销量TOP的小册--<Spring Boot源码解读与原理剖析> ...

  9. xxl-sso源码解读(基于Cookie)

    xxl-sso源码解读 文章目录 xxl-sso源码解读 前言 一.XXL-SSO是什么? 二.搭建步骤 三.系统简述 1.xxl-sso-server 2.xxl-sso-core 3. xxl-s ...

  10. Bert系列(二)——源码解读之模型主体

    本篇文章主要是解读模型主体代码modeling.py.在阅读这篇文章之前希望读者们对bert的相关理论有一定的了解,尤其是transformer的结构原理,网上的资料很多,本文内容对原理部分就不做过多 ...

最新文章

  1. 大于2的质数判断以及范围质数查找
  2. OC本学习笔记Foundation框架NSString与NSMutableString
  3. python 批量处理文件_python批量处理文件或文件夹
  4. ELK开机自启动脚本
  5. python logging简单使用
  6. android 圆形边框填充颜色,如何在android中表示多种颜色的圆形边框
  7. 读书笔记_量化交易如何建立自己的算法交易01
  8. leetcode 384 打乱数组
  9. alpine(Go环境)Docker基础镜像制作
  10. 解决方案: NIS+NFS+AUTOFS
  11. 递归经典案例汉诺塔 python实现_python实现汉诺塔递归算法经典案例
  12. 126.单词接龙II
  13. 12个开放平台大家一起来玩
  14. 智能聊天机器人的技术综述
  15. 多源信息融合_BIM+GIS的深度融合之路
  16. 【iOS越狱开发】iOS越狱步骤1之环境搭建
  17. 考研政治|马克思主义基本原理
  18. Softing物联网(IoT)方案之OT/IT数据集成
  19. sklearn+机器学习
  20. 南卡和三星蓝牙耳机哪个戴着舒服?佩戴舒适的蓝牙耳机推荐

热门文章

  1. 明日方舟泰拉世界解析
  2. 石家庄地铁站项目最终总结报告
  3. docker 部分插件安装命令
  4. 服务器、网站被攻击了怎么办?
  5. 广义矩方法(GMM)与动态面板数据简述
  6. 广东工业大学计算机学院张静,广东工业大学文件.doc
  7. 网站被腾讯停止访问人工服务器,网站被腾讯屏蔽怎么办?实测多种解封方式
  8. 英文论文评审意见_sci英文论文审稿意见怎么写(7)
  9. 后盾网php视频教程迅雷下载,后盾网-向军2015新版HDPHP视频教程
  10. aws基础架构学习笔记