SpringBoot 源码分析
文章平均质量分 86
SpringBoot 源码分析
一名技术极客
在代码的海洋里,我是一名不断航行的探索者。热爱Java,热衷于深入挖掘技术细节,享受解决复杂问题的成就感。这里是我的CSDN博客,记录我在编程路上的学习笔记、项目实践和对新技术的思考。
作为一名拥有多年开发经验的Java程序员,我深知学习过程中的困难与挑战。因此,我的博客会尽量用简明的语言去阐释复杂的概念,分享实用的编程技巧,以及那些在我工作过程中积累的宝贵经验。无论是初学者还是资深开发者,我都希望这里的内容能对您有所帮助。
在这个快速变化的技术世界,让我们一起保持好奇心,不断学习,共同进步。欢迎留言讨论,期待与您一起探讨编程之美!
展开
-
13、SpringBoot 源码分析 - 自动配置深度分析六
至此自动配置类的解析完成了,后面的bean定义加载就不说了,前面说过要搞个自定义的自动配置的,我们试试吧。事件的监听器又添加了什么要排除的,貌似是个扩展点啊。这里又一次的进行了排除,我猜估计是为了防止自定义的接受。事件,具体他们收到后怎么做的自己可以去看,不多说了。最后把配置类名字结合和排除集合封装成。然后就是迭代每一个自动配置类,进行。原创 2024-06-07 17:38:43 · 165 阅读 · 0 评论 -
12、SpringBoot 源码分析 - 自动配置深度分析五
一个条件过滤器,还有其他两个,原理一样的,只是内部判断可能比较复杂,这个自己研究研究吧。是不是觉得很奇怪,前面索引少了几个,其实不是,只有没满足条件的才会放一个信息对象,满足条件的是。如果子线程没解析完,主线程解析完后,会调用到这里,还是会然子线程完成了,把结果返回才继续的。创建一个结果解析器对象,然后把起始索引和终止索引传进去,然后封装到。就是遍历,然后获取对应条件的类名,这里就是我前面说的从。如果有逗号的,说明有好几个,所以就循环尝试。是个枚举,判断要加载的类是否存在。加载进来的,进行加载检查。原创 2024-06-07 17:31:03 · 262 阅读 · 0 评论 -
11、SpringBoot 源码分析 - 自动配置深度分析四
原来还有一个加载的文件 META-INF/spring-autoconfigure-metadata.properties。差点把这个细节忘记了,不好意思啊,这个要说下,不然后面说到怎么进行条件过滤的会不知道数据怎么来匹配的。这里加载的就是自动配置类上的条件类,也就是说过滤的时候会判断这些类是否存在或者不存在才能加载。每一个都会去匹配那么多配置类,所以他开了线程,看这个红色框的方法。个,超过配置类个数,每个都有过滤条件,可能还有好几个条件。好了,这里铺垫好了,就可以继续讲过滤了。所以总共属性有 486。原创 2024-05-24 10:09:14 · 359 阅读 · 0 评论 -
深入解析Spring Boot启动机制:从原理到实践
下图代码说明了,Spring在初始化全部 单例Bean以后,会执行接口。SpringBoot 会在Spring完全启动完成后,才开启Http流量。这给了我们启示:应该在Spring启动完成后开启入口流量。Rpc和 MQ流量也应该如此,所以建议大家 在或者等位置 注册服务,开启流量。例如服务发现组件,就是在中注册服务的!原创 2024-05-24 09:46:05 · 985 阅读 · 0 评论 -
10、SpringBoot 源码分析 - 自动配置深度分析三
这几个条件,他会去配置类的注解上查找相应的条件类是否存在,不存在就会被过滤掉,过滤的时候可能会开启线程,帮助一起处理,因为配置类数量多。然后进行去重,再获取要排除的名字,检查排除的类的合理性,然后排除,再进行条件类过滤,因为可能有些配置类缺少某些类就不能用了,触发自动装配导入事件,最后封装成。前面讲了那么多,都是为了这里啊,不然直接上来都不知道是怎么来的,我们来看看这个干了什么,别看就那么点,其实里面很复杂,简单的说就是从我们初始化加载的所有的。个,好多啊,没关系,后面过滤就没那么多了。原创 2024-05-23 17:48:07 · 1245 阅读 · 0 评论 -
09、SpringBoot 源码分析 - 自动配置深度分析二
都拿出来,都注册到里面去,就是前面讲的分组注册,最后处理,处理完之后还要创建。,这里面封装着自动配置类名字集合,后面只是放到对应的映射里,方便用。,这里就是避免迭代器在迭代的时候还要新的元素添加进来,会出问题。为什么要这么分组,这里就体现出来了,看他怎么处理的,遍历所有的。,其实这个时候已经把要自动配置的类找到了,然后迭代去进行递归。实体迭代器,就是已经把自动配置的类名集合封装成迭代器了。这里就是处理逻辑,其实就是创建。这里要开始处理了,其实是要组。,然后把前面放进去的。原创 2024-05-23 17:38:04 · 293 阅读 · 0 评论 -
08、SpringBoot 源码分析 - 自动配置深度分析一
因为处理的方式是迭代器循环,所以不能添加,只能直接处理,当然如果不为空,表示没有在处理,可以添加到。看下他的结构,左边不用管,就是为了回调拿到一些属性,好对容器操作,主要是右边,我们前面。的原理,想看的朋友可以看下这篇文章,有这个基础对下面的理解比较好,因为这里还有个。那为什么就有这个注解就能自动配置呢,我们来看看这个注解,其他你可以不管,但是。有了这个前提,我们就可以先看这个配置类的解析过程,其实就是。进来的类,然后按不同类型进行判断处理,重点就是这里啦,我们先来看下。的解析处理,解析流程我以前的。原创 2024-05-22 11:39:00 · 1129 阅读 · 0 评论 -
07、SpringBoot 源码分析 - SpringApplication启动流程七
这里面有干了很多事,他会将最前面获得的初始化器都初始化,然后广播上下文准备好事件,然后这里居然还设置了不能覆盖同名。源码文章,其实内部干了不少事情,后面会讲,毕竟前面那么多初始化器初始化了,肯定会对后面。获取最开始创建的初始化器,遍历每一个初始化器,进行初始化。刷新完成后基本没啥事了,就进行启动完成事件通知,还有一些的。名字生成器,资源加载器,还有前面创建的转换器也要放进来。定义,这样就避免了用户去捣乱了。方法,进行初始化,就不讲了,可以看我写的。除了刷新外,还注册了一个钩子。类型的,所以会调用到他的。原创 2024-05-22 11:05:07 · 582 阅读 · 0 评论 -
06、SpringBoot 源码分析 - SpringApplication启动流程六
收到环境准备好的事件后做的事,当然还有其他的一些配置信息,我们还是先把主线弄明白再搞细节,不过这里配置完成会进行广播,这次的事件是。准备环境这里比较复杂,可以写很多,这个还是细节的时候去看,先把脉络理完吧,后面讲上下文的准备,这个也很重要,准备完了就是。其他剩下的暂时不讲,因为比较复杂,很多都是一些属性的配置,比如会获取你的。这里主要是配置了很多的类型转换器和格式转换器,另外两个跟换进属性相关。这个里面有配置很多转换器,我就不多讲了,自己看就行了。根据类型创建对应的上下文对象,默认全是注解。原创 2024-05-13 14:14:08 · 1066 阅读 · 0 评论 -
05、SpringBoot 源码分析 - SpringApplication启动流程五
如果是类型的话,就可以直接判断,不是的话要用适配器适配一下,适配器模式,接口不一致的时候,可以用这个适配,这里用的是对象适配器,持有要适配的对象。是否支持就是看事件类型和事件源类型是否支持了。原创 2024-05-13 13:48:24 · 560 阅读 · 0 评论 -
04、SpringBoot 源码分析 - SpringApplication启动流程四
现在有个启动事件,但是不一定所有监听器都要支持该事件,如果不支持表示对此事件不关心,那就不需要通知给他了,所以这里就是为了找出支持该事件的监听器集合,找出来之后还会给事件和监听器集合做映射,放入缓存中。//获取事件源,就是事件是谁触发的Class原创 2024-05-11 14:49:12 · 777 阅读 · 1 评论 -
03、SpringBoot 源码分析 - SpringApplication启动流程三
其实你可以看到,其实是一个事件发布监听器,他的事情就是监听SpringApplication的运行事件,然后发布给其他的监听器,他里面有一个事件广播器的,可以广播给其他监听器事件。的初始化,会进行不同初始化阶段的广播,去通知监听器,监听器就可以做一些扩展的事情啦,比如初始化自己的环境什么的。为了让其他可以扩展,让他们知道现在初始化到哪个阶段了,他们可以参数,于是让他们注册到。构造方法分析完了,具体做了什么事情,就是初始化类和监听器的创建。这里就是推断启动类的,直接抛出异常,然后找到。的,因为现在只有一个。原创 2024-05-11 14:29:20 · 767 阅读 · 0 评论 -
02、SpringBoot 源码分析 - SpringApplication启动流程二
好了,今天就到这里了,希望对学习理解有帮助,大神看见勿喷,仅为自己的学习理解,能力有限,请多包涵。,这个是一个一对多的映射集合,比如说一个接口,对应多个实现啦。,再去加载相应的数据,然后把值用逗号分隔符分开,然后把值去空格后和键一起都放入。内部关键的我贴一下,获取输入流,获取资源名字,处理的是xml的或者其他的类型。初始化可能有优先顺序的,所以要进行排序,如果没有实现。接口的一律优先级最低的,内部是这样排序的,好像是获取某个类型的集合,类型就是。里,后面肯定会有用,后面再讲吧。,返回小点的值就好啦。原创 2024-05-10 11:53:22 · 823 阅读 · 1 评论 -
01、SpringBoot 源码分析 - SpringApplication启动流程一
之所以能那么强大,扩展性那么好,底层还是依赖spring,他的注解,他的处理器,他的监听器,可以有无数的扩展,废话不多说,当然还是老习惯,这次要分析Spring Boot 2.2.6.RELEASE版本的,要搞懂的原理,得先从他的初始化开始,然后层层深入,各个击破。原创 2024-05-10 11:42:43 · 645 阅读 · 0 评论