
Spring官网读书笔记
基于官网对Spring应用及其源码做了详细的介绍,适用于开始接触Spring源码,Spring初学者。通过此专栏能对Spring有深入的了解,为Spring源码阅读打好坚实的基础
明智说
不慌不忙,做个技术小流氓!欢迎关注我的公众号,微信搜索:明智说,专注分享各种框架源码,中间件技术,MySQL,JVM等等。
展开
-
听说你还没学Spring就被源码编译劝退了?30+张图带你玩转Spring编译
源码学习第一步,Spring源码编译之所以写这么一篇文章是因为群里的小伙伴在编译源码时碰到了问题,再加上笔者自身正准备做一个源码的注释版本,恰好也需要重新编译一份代码,至于为什么要将源码编译到本地就不用多说了吧?比如,你可以任意的添加注释,一边读源码一边记笔记,甚至你可以修改源码,更好的调试程序等等。但是如果你坚持通过导入依赖或者引入jar包的方式来学习源码,我觉得也可以,没有最好的,只有最适合自己的!话不多说,我们开始正题本文将严格按照官方介绍的步骤一步步进行编译,对应的官方链接:https原创 2020-07-03 18:03:25 · 7153 阅读 · 26 评论 -
Spring官网阅读 | 总结篇
接近用了4个多月的时间,完成了整个《Spring官网阅读》系列的文章,本文主要对本系列所有的文章做一个总结,同时也将所有的目录汇总成一篇文章方便各位读者来阅读。下面这张图是我整个的写作大纲对应的文章目录汇总如下:Spring官网阅读(一)容器及实例化本文主要涉及到官网中的1.2,1.3节。主要介绍了什么是容器,容器如何工作。Spring官网阅读(二)(依赖注入及方法注入)本文...原创 2020-04-14 21:25:45 · 19932 阅读 · 17 评论 -
Spring官网阅读(十八)AOP的核心概念
这里写目录标题什么是AOPAOP中的核心概念切面通知切点引入目标对象代理对象织入Spring中如何使用AOP1、开启AOP2、申明切面3、申明切点切点表达式excecution表达式语法示例@annotation表达式语法示例within表达式语法示例@within表达式语法示例arg表达式语法示例@args表达式语法示例this表达式target表达式定义切点4、申明通知通知的类型BeforeA...原创 2020-04-13 23:11:41 · 6969 阅读 · 18 评论 -
Spring官网阅读(十七)Spring中的数据校验
在前文中我们一起学习了Spring中的数据绑定,也就是整个DataBinder的体系,其中有提到DataBinder跟校验相关。可能对于Spring中的校验大部分同学跟我一一样,都只是知道可以通过@Valid / @Validated来对接口的入参进行校验,但是对于其底层的具体实现以及一些细节都不是很清楚,通过这篇文章我们就来彻底搞懂Spring中的校验机制。在学习Spring中某个功能时,往...原创 2020-04-09 00:19:20 · 3353 阅读 · 12 评论 -
Spring官网阅读(十六)Spring中的数据绑定
在前面的文章我们学习过了Spring中的类型转换以及格式化,对于这两个功能一个很重要的应用场景就是应用于我们在XML中配置的Bean的属性值上,如下:<bean class="com.dmz.official.converter.service.IndexService" name="indexService"> <property name="name" value="...原创 2020-04-05 20:56:25 · 4108 阅读 · 23 评论 -
Spring官网阅读(十五)Spring中的格式化(Formatter)
在上篇文章中,我们已经学习过了Spring中的类型转换机制。现在我们考虑这样一个需求:在我们web应用中,我们经常需要将前端传入的字符串类型的数据转换成指定格式或者指定数据类型来满足我们调用需求,同样的,后端开发也需要将返回数据调整成指定格式或者指定类型返回到前端页面。这种情况下,Converter已经没法直接支撑我们的需求了。这个时候,格式化的作用就很明显了,这篇文章我们就来介绍Spring中...原创 2020-04-01 08:53:54 · 5003 阅读 · 24 评论 -
Spring官网阅读(十四)Spring中的BeanWrapper及类型转换
BeanWrapper是Spring中一个很重要的接口,Spring在通过配置信息创建对象时,第一步首先就是创建一个BeanWrapper。这篇文章我们就分析下这个接口,本文内容主要对应官网中的3.3及3.4小结接口定义// Spring低级JavaBeans基础设施的中央接口。通常来说并不直接使用BeanWrapper,而是借助BeanFactory或者DataBinder来一起使用,B...原创 2020-03-31 08:23:57 · 7967 阅读 · 11 评论 -
Spring官网阅读(十三)ApplicationContext详解(下)
在前面两篇文章中,我们已经对ApplicationContext的大部分内容做了介绍,包括国际化,Spring中的运行环境,Spring中的资源,Spring中的事件监听机制,还剩唯一一个BeanFactory相关的内容没有介绍,这篇文章我们就来介绍BeanFactory,这篇文章结束,关于ApplicationContext相关的内容我们也总算可以告一段落了。本文对应官网中的1.16及1.15...原创 2020-03-30 13:39:41 · 3629 阅读 · 22 评论 -
Spring官网阅读(十二)ApplicationContext详解(中)
在上篇文章中我们已经对ApplicationContext的一部分内容做了介绍,ApplicationContext主要具有以下几个核心功能:国际化借助Environment接口,完成了对Spring运行环境的抽象,可以返回环境中的属性,并能出现出现的占位符借助于Resource系列接口,完成对底层资源的访问及加载继承了ApplicationEventPublisher接口,能够进行事...原创 2020-03-17 23:53:04 · 3045 阅读 · 2 评论 -
Spring官网阅读(十一)ApplicationContext详细介绍(上)
在前面的文章中,我们已经完成了官网中关于IOC内容核心的部分。包括容器的概念,Spring创建Bean的模型BeanDefinition的介绍,容器的扩展点(BeanFactoryPostProcessor,FactroyBean,BeanPostProcessor)以及最重要的Bean的生命周期等。接下来大概还要花三篇文章完成对官网中第一大节的其它内容的学习,之所以要这么做,是笔者自己粗读了一...原创 2020-03-16 00:42:17 · 3956 阅读 · 2 评论 -
Spring官网阅读(十)Spring中Bean的生命周期(下)
在上篇文章中,我们已经对Bean的生命周期做了简单的介绍,主要介绍了整个生命周期中的初始化阶段以及基于容器启动停止时LifeCycleBean的回调机制,另外对Bean的销毁过程也做了简单介绍。但是对于整个Bean的生命周期,这还只是一小部分,在这篇文章中,我们将学习完成剩下部分的学习,同时对之前的内容做一次复习。整个Bean的生命周期,按照我们之前的介绍,可以分为四部分实例化属性注入初...原创 2020-03-10 23:30:22 · 3369 阅读 · 4 评论 -
Spring官网阅读(九)Spring中Bean的生命周期(上)
在之前的文章中,我们一起学习过了官网上容器扩展点相关的知识,包括FactoryBean,BeanFactroyPostProcessor,BeanPostProcessor,其中BeanPostProcessor还剩一个很重要的知识点没有介绍,就是相关的BeanPostProcessor中的方法的执行时机。之所以在之前的文章中没有介绍是因为这块内容涉及到Bean的生命周期。在这篇文章中我们开始学...原创 2020-03-10 23:27:55 · 5161 阅读 · 4 评论 -
Spring官网阅读(八)容器的扩展点(三)(BeanPostProcessor)
在前面两篇关于容器扩展点的文章中,我们已经完成了对BeanFactoryPostProcessor很FactoryBean的学习,对于BeanFactoryPostProcessor而言,它能让我们对容器中的扫描出来的BeanDefinition做出修改以达到扩展的目的,而对于FactoryBean而言,它提供了一种特殊的创建Bean的手段,能让我们将一个对象直接放入到容器中,成为Spring所...原创 2020-03-09 22:31:41 · 2834 阅读 · 2 评论 -
Spring官网阅读(七)容器的扩展点(二)FactoryBean
在上篇文章中我们已经对容器的第一个扩展点(BeanFactoryPostProcessor)做了一系列的介绍。其中主要介绍了Spring容器中BeanFactoryPostProcessor的执行流程。已经Spring自身利用了BeanFactoryPostProcessor完成了什么功能,对于一些细节问题可能说的不够仔细,但是在当前阶段我想要做的主要是为我们以后学习源码打下基础。所以对于这些问...原创 2020-03-09 22:28:19 · 2572 阅读 · 8 评论 -
Spring官网阅读(六)容器的扩展点(一)BeanFactoryPostProcessor
之前的文章我们已经学习完了BeanDefinition的基本概念跟合并,其中多次提到了容器的扩展点,这篇文章我们就开始学习这方面的知识。这部分内容主要涉及官网中的1.8小结。按照官网介绍来说,容器的扩展点可以分类三类,BeanPostProcessor,BeanFactoryPostProcessor以及FactoryBean。本文我们主要学习BeanFactoryPostProcessor,对...原创 2020-03-10 23:23:59 · 4280 阅读 · 2 评论 -
Spring官网阅读(五)BeanDefinition(下)
上篇文章已经对BeanDefinition做了一系列的介绍,这篇文章我们开始学习BeanDefinition合并的一些知识,完善我们整个BeanDefinition的体系,Spring在创建一个bean时多次进行了BeanDefinition的合并,对这方面有所了解也是为以后阅读源码做准备。本文主要对应官网中的1.7小节在上篇文章中,我们学习了BeanDefinition的一些属性,其中有以...原创 2020-03-10 23:23:43 · 3094 阅读 · 3 评论 -
Spring官网阅读(四)BeanDefinition(上)
前面几篇文章已经学习了官网中的1.2,1.3,1.4三小结,主要是容器,Bean的实例化及Bean之间的依赖关系等。这篇文章,我们继续官网的学习,主要是BeanDefinition的相关知识,这是Spring中非常基础的一块内容,也是我们阅读源码的基石。本文主要涉及到官网中的1.3及1.5中的一些补充知识。同时为我们1.7小节中BeanDefinition的合并做一些铺垫BeanDefini...原创 2020-03-10 23:23:10 · 5260 阅读 · 4 评论 -
Spring官网阅读(三)自动注入
上篇文章我们已经学习了1.4小结中关于依赖注入跟方法注入的内容。这篇文章我们继续学习这结中的其他内容,顺便解决下我们上篇文章留下来的一个问题-----注入模型。文章目录前言:自动注入:自动注入的优点:注入模型:自动注入的缺陷:如何将Bean从自动注入中排除?自动注入跟精确注入的比较总结:补充(1.4小结的剩余部分)depends-on:lazy:前言:在看下面的内容之前,我们先要对自动注...原创 2020-03-10 23:22:53 · 3162 阅读 · 5 评论 -
Spring官网阅读(二)(依赖注入及方法注入)
上篇文章我们学习了官网中的1.2,1.3两小节,主要是涉及了容器,以及Spring实例化对象的一些知识。这篇文章我们继续学习Spring官网,主要是针对1.4小节,主要涉及到Spring的依赖注入。虽然只有一节,但是涉及的东西确不少。话不多说,开始正文。文章目录依赖注入:测试setter方法注入测试构造函数注入疑问:区别:方法注入:为什么需要方法注入:通过注入上下文(applicationC...原创 2020-03-10 23:22:36 · 5666 阅读 · 12 评论 -
Spring官网阅读(一)容器及实例化
从今天开始,我们一起过一遍Spring的官网,一边读,一边结合在路神课堂上学习的知识,讲一讲自己的理解。不管是之前关于动态代理的文章,还是读Spring的官网,都是为了之后对Spring的源码做更全面细致的学习,所以在这个过程中,不会涉及过多底层的代码,更多是通过例子证明我们在官网得出的结论,希望自己可以坚持下来,给自己加个油!!!本文主要涉及到官网中的1.2,1.3节。文章目录Sprin...原创 2020-03-10 23:22:08 · 13920 阅读 · 12 评论