SpringBoot源码深入解析
本系列博客,旨在帮助大家理解SpringBoot的工作原理,主要涉及源码解读,同时能学习优秀的框架Spring,理解其精髓。
张书康
学海无涯。
展开
-
SpringBoot2 | Spring IOC 流程中核心扩展接口的12个扩展点源码分析(十一)
概述Spring 的核心思想即是容器。整个容器运行时,外部看似风平浪静,内部实则一片汪洋大海。Spring 容器刷新的过程严格遵守开闭原则,内部对修改关闭,对扩展开放。可以这么理解:把 Spring 容器理解为一个钥匙环,上面挂满了钥匙,每个钥匙理解为一个扩展接口。钥匙的顺序是固定的,可理解为接口的调用顺序固定,对修改关闭。每个钥匙可以用来做不同的事情,可理解为扩展接口的实现不同,对扩展开...原创 2019-01-09 13:24:15 · 5873 阅读 · 4 评论 -
SpringBoot2 | BeanDefinition 注册核心类 ImportBeanDefinitionRegistrar 源码分析 (十)
概述本篇来介绍一个Spring强大的扩展接口:ImportBeanDefinitionRegistrar,该接口主要用来注册beanDefinition。很多三方框架集成Spring 的时候,都会通过该接口,实现扫描指定的类,然后注册到spring 容器中。比如 Mybatis 中的Mapper接口,springCloud中的 FeignClient 接口,都是通过该接口实现的自定义注册逻辑。...原创 2018-12-27 11:23:47 · 7553 阅读 · 0 评论 -
SpringBoot2 | SpingBoot FilterRegistrationBean 注册组件 | FilterChain 责任链源码分析(九)
微信公众号:吉姆餐厅ak学习更多源码知识,欢迎关注。SpringBoot2 | SpringBoot启动流程源码分析(一)SpringBoot2 | SpringBoot启动流程源码分析(二)SpringBoot2 | @SpringBootApplication注解 自动化配置流程源码分析(三)SpringBoot2 | SpringBoot Environment源码分析(四...原创 2018-12-15 20:57:45 · 12785 阅读 · 5 评论 -
SpringBoot2 | Spring AOP 原理深度源码分析(八)
概述AOP(Aspect-Oriented Programming) 面向切面编程。简单来说,就是将影响对象行为的一些公共方法抽取出来,做成公共部分即为切面。使用方式就不用阐述了,本系列主要是对源码进行深度分析和总结。UML图Spring Aop 自动装配核心类 UML图:源码springboot 自动装配肯定还是从spring.factories开始:# Auto Config...原创 2018-11-25 16:11:11 · 18619 阅读 · 11 评论 -
SpringBoot2 | 条件注解 @ConditionalOnBean 原理源码分析(七)
条件注解是Spring4提供的一种bean加载特性,主要用于控制配置类和bean初始化条件。在springBoot,springCloud一系列框架底层源码中,条件注解的使用到处可见。本篇就来探讨一下比较常用的一个调节注解:@ConditionalOnBean。可能不少人在使用该注解时会遇到不生效的情况:@ConditionalOnBean依赖的 bean 明明已经配置了,但就是不生效。@C...原创 2018-11-17 00:15:12 · 14539 阅读 · 7 评论 -
SpringBoot2 | SpringBoot监听器源码分析 | 自定义ApplicationListener(六)
概述我们都知道Spring源码博大精深,阅读起来相对困难。原因之一就是内部用了大量的监听器,spring相关的框架,皆是如此,spring security,springBoot等。今天来看下springBoot监听器的应用。因为springBoot是对spring的封装,所以springBoot的监听器的应用主要是在启动模块。源码springBoot监听器的主要分为两类,运行时监听...原创 2018-09-21 18:33:31 · 7066 阅读 · 0 评论 -
SpringBoot2 | SpringBoot自定义AutoConfiguration | SpringBoot自定义starter(五)
概述springBoot为我们提供了自动化装配的功能,简单方便。可以像使用插件一样,对各个组件自由组合装配。只需引入定义好的 starter 即可。有点类似于java的SPI机制,只不过SPI机制是为了解决项目与项目之间的解耦,而starter方式实现了模块化完全解耦,实现热插拔功能。今天就来自定义一个自动化装配的实现,自定义starter。自定义starter首先定义一个配置类模块:...原创 2018-09-20 19:52:20 · 10261 阅读 · 6 评论 -
SpringBoot2 | SpringBoot Environment源码分析(四)
版权声明:本文为博主原创文章,转载请标明出处。SpringBoot2 | SpringBoot启动流程源码分析(一)SpringBoot2 | SpringBoot启动流程源码分析(二)SpringBoot2 | @SpringBootApplication注解 自动化配置流程源码分析(三)一、概述Environment是 spring 为运行环境提供的高度抽象接口,项...原创 2018-09-17 15:32:32 · 10988 阅读 · 1 评论 -
SpringBoot2 | @SpringBootApplication注解 自动化配置流程源码分析(三)
在上一篇博客中分析了springBoot启动流程,大体的轮廓只是冰山一角。今天就来看一下springBoot的亮点功能:自动化装配功能。 先从@SpringBootApplication开始。在启动流程章节中,我们讲述了SpringBoot2大致的启动步骤,并进行了源码详解。但是在刷新容器这块并未展开,refreshContext(context);简单的一行代码,背后却做了太多...原创 2018-09-07 17:02:06 · 21378 阅读 · 6 评论 -
SpringBoot2 | SpringBoot启动流程源码分析(二)
继续上一篇博客的启动流程分析。 在上一篇SpringBoot | SpringBoot2 | SpringBoot2启动流程源码分析(一)中我们提到springBoot启动流程大致有以下7点:第一步:获取并启动监听器第二步:构造容器环境第三步:创建容器第四步:实例化SpringBootExceptionReporter.class,用来支持报告关于启动的错误第五步:准备容器...原创 2018-09-03 16:01:43 · 22531 阅读 · 5 评论