Spring官网阅读 | 总结篇
接近用了4个多月的时间,完成了整个《Spring官网阅读》系列的文章,本文主要对本系列所有的文章做一个总结,同时也将所有的目录汇总成一篇文章方便各位读者来阅读。
下面这张图是我整个的写作大纲
对应的文章目录汇总如下:
Spring官网阅读(一)容器及实例化
本文主要涉及到官网中的
1.2
,1.3
节。主要介绍了什么是容器,容器如何工作。
Spring官网阅读(二)(依赖注入及方法注入)
本文主要涉及到官网中的
1.4
小节,主要涉及到Spring的依赖注入
Spring官网阅读(三)自动注入
在对依赖注入跟方法注入有一定了解后,我们需要立马学习自动注入。通过这篇文章你会知道真正的
byName
跟byType
。本文主要涉及到官网中的1.4
小节
Spring官网阅读(四)BeanDefinition(上)
本文主要涉及到官网中的
1.3
及1.5
中的一些补充知识。同时为我们1.7
小节中BeanDefinition
的合并做一些铺垫
Spring官网阅读(五)BeanDefinition(下)
上篇文章已经对BeanDefinition做了一系列的介绍,这篇文章我们开始学习BeanDefinition合并的一些知识,完善我们整个BeanDefinition的体系,Spring在创建一个bean时多次进行了BeanDefinition的合并,对这方面有所了解也是为以后阅读源码做准备。本文主要对应官网中的1.7小节
Spring官网阅读(六)容器的扩展点(一)BeanFactoryPostProcessor
之前的文章我们已经学习完了BeanDefinition的基本概念跟合并,其中多次提到了容器的扩展点,这篇文章我们就开始学习这方面的知识。这部分内容主要涉及官网中的1.8小结。按照官网介绍来说,容器的扩展点可以分类三类,BeanPostProcessor,BeanFactoryPostProcessor以及FactoryBean。本文我们主要学习BeanFactoryPostProcessor,对应官网中内容为1.8.2小节
Spring官网阅读(七)容器的扩展点(二)FactoryBean
在上篇文章中我们已经对容器的第一个扩展点(BeanFactoryPostProcessor)做了一系列的介绍。其中主要介绍了Spring容器中BeanFactoryPostProcessor的执行流程。已经Spring自身利用了BeanFactoryPostProcessor完成了什么功能,对于一些细节问题可能说的不够仔细,但是在当前阶段我想要做的主要是为我们以后学习源码打下基础。所以对于这些问题我们暂且不去过多纠结,待到源码学习阶段我们会进行更加细致的分析。
在本篇文章中,我们将要学习的是容器的另一个扩展点(FactoryBean),对于FactoryBean官网上的介绍甚短,但是如果我们对Spring的源码有一定了解,可以发现Spring在很多地方都对这种特殊的Bean做了处理。话不多说,我们开始进入正文。
Spring官网阅读(八)容器的扩展点(三)(BeanPostProcessor)
在前面两篇关于容器扩展点的文章中,我们已经完成了对BeanFactoryPostProcessor很FactoryBean的学习,对于BeanFactoryPostProcessor而言,它能让我们对容器中的扫描出来的BeanDefinition做出修改以达到扩展的目的,而对于FactoryBean而言,它提供了一种特殊的创建Bean的手段,能让我们将一个对象直接放入到容器中,成为Spring所管理的一个Bean。而我们今天将要学习的BeanPostProcessor不同于上面两个接口,它主要干预的是Spring中Bean的整个生命周期(实例化—属性填充—初始化—销毁),关于Bean的生命周期将在下篇文章中介绍,如果不熟悉暂且知道这个概念即可,下面进入我们今天的正文。
Spring官网阅读(九)Spring中Bean的生命周期(上)
在之前的文章中,我们一起学习过了官网上容器扩展点相关的知识,包括FactoryBean,BeanFactroyPostProcessor,BeanPostProcessor,其中BeanPostProcessor还剩一个很重要的知识点没有介绍,就是相关的BeanPostProcessor中的方法的执行时机。之所以在之前的文章中没有介绍是因为这块内容涉及到Bean的生命周期。在这篇文章中我们开始学习Bean的生命周期相关的知识,整个Bean的生命周期可以分为以下几个阶段:
实例化(得到一个还没有经过属性注入跟初始化的对象)
属性注入(得到一个经过了属性注入但还没有初始化的对象)
初始化(得到一个经过了初始化但还没有经过AOP的对象,AOP会在后置处理器中执行)
销毁
在上面几个阶段中,BeanPostProcessor将会穿插执行。而在初始化跟销毁阶段又分为两部分:生命周期回调方法的执行
aware相关接口方法的执行
这篇文章中,我们先完成Bean生命周期中,整个初始化阶段的学习,对于官网中的章节为1.6小结
Spring官网阅读(十)Spring中Bean的生命周期(下)
在上篇文章中,我们已经对Bean的生命周期做了简单的介绍,主要介绍了整个生命周期中的初始化阶段以及基于容器启动停止时LifeCycleBean的回调机制,另外对Bean的销毁过程也做了简单介绍。但是对于整个Bean的生命周期,这还只是一小部分,在这篇文章中,我们将学习完成剩下部分的学习,同时对之前的内容做一次复习。整个Bean的生命周期,按照我们之前的介绍,可以分为四部分
实例化
属性注入
初始化
销毁
本文主要介绍实例化及属性注入阶段
Spring官网阅读(十一)ApplicationContext详细介绍(上)
在前面的文章中,我们已经完成了官网中关于IOC内容核心的部分。包括容器的概念,Spring创建Bean的模型BeanDefinition的介绍,容器的扩展点(BeanFactoryPostProcessor,FactroyBean,BeanPostProcessor)以及最重要的Bean的生命周期等。接下来大概还要花三篇文章完成对官网中第一大节的其它内容的学习,之所以要这么做,是笔者自己粗读了一篇源码后,再读一遍官网,发现源码中的很多细节以及难点都在官网中介绍了。所以这里先跟大家一起把官网中的内容都过一遍,也是为了更好的进入源码学习阶段。
本文主要涉及到官网中的1.13,1.15,1.16小节中的内容以及第二大节的内容
Spring官网阅读(十二)ApplicationContext详解(中)
在上篇文章中我们已经对ApplicationContext的一部分内容做了介绍,ApplicationContext主要具有以下几个核心功能:
国际化
借助Environment接口,完成了对Spring运行环境的抽象,可以返回环境中的属性,并能出现出现的占位符
借助于Resource系列接口,完成对底层资源的访问及加载
继承了ApplicationEventPublisher接口,能够进行事件发布监听
负责创建、配置及管理Bean
在上篇文章我们已经分析学习了1,2两点,这篇文章我们继续之前的学习
Spring官网阅读(十三)ApplicationContext详解(下)
在前面两篇文章中,我们已经对ApplicationContext的大部分内容做了介绍,包括国际化,Spring中的运行环境,Spring中的资源,Spring中的事件监听机制,还剩唯一一个BeanFactory相关的内容没有介绍,这篇文章我们就来介绍BeanFactory,这篇文章结束,关于ApplicationContext相关的内容我们也总算可以告一段落了。本文对应官网中的1.16及1.15小结
Spring官网阅读(十四)Spring中的BeanWrapper及类型转换
BeanWrapper是Spring中一个很重要的接口,Spring在通过配置信息创建对象时,第一步首先就是创建一个BeanWrapper。这篇文章我们就分析下这个接口,本文内容主要对应官网中的
3.3
及3.4
小结
Spring官网阅读(十五)Spring中的格式化(Formatter)
在上篇文章中,我们已经学习过了Spring中的类型转换机制。现在我们考虑这样一个需求:在我们web应用中,我们经常需要将前端传入的字符串类型的数据转换成指定格式或者指定数据类型来满足我们调用需求,同样的,后端开发也需要将返回数据调整成指定格式或者指定类型返回到前端页面。这种情况下,Converter已经没法直接支撑我们的需求了。这个时候,格式化的作用就很明显了,这篇文章我们就来介绍Spring中格式化的一套体系。本文主要涉及官网中的3.5及3.6小结
Spring官网阅读(十六)Spring中的数据绑定
在前面的文章我们学习过了Spring中的类型转换以及格式化,对于这两个功能一个很重要的应用场景就是应用于我们在XML中配置的Bean的属性值上,如下:
1 2 3 4 5 在上面这种情况下,我们从XML中解析出来的值类型肯定是String类型,而对象中的属性为int类型,当Spring将配置中的数据应用到Bean上时,就调用了我们的类型转换器完成了String类型的字面值到int类型的转换。
那么除了在上面这种情况中使用了类型转换,还有哪些地方用到了呢?对了,就是本文要介绍的数据绑定–DataBinder。
Spring官网阅读(十七)Spring中的数据校验
在前文中我们一起学习了Spring中的数据绑定,也就是整个DataBinder的体系,其中有提到DataBinder跟校验相关。可能对于Spring中的校验大部分同学跟我一一样,都只是知道可以通过@Valid / @Validated来对接口的入参进行校验,但是对于其底层的具体实现以及一些细节都不是很清楚,通过这篇文章我们就来彻底搞懂Spring中的校验机制。
在学习Spring中某个功能时,往往要从Java本身出发。比如我们之前介绍过的Spring中的国际化(见《Spring官网阅读(十一)》)、Spring中的ResolvableType(见《Spring杂谈》系列文章)等等,它们都是对Java本身的封装,沿着这个思路,我们要学习Spring中的数据校验,必然要先对Java中的数据校验有一定了解。
Spring官网阅读(十八)Spring中的AOP
本篇文章将作为整个Spring官网阅读笔记的最后一篇。如果要谈SpringFramework必定离不开两点
- IOC(控制反转)
- AOP(面向切面)
在前面的文章中我们已经对IOC做过详细的介绍了,本文主要介绍AOP,关于其中的源码部分将在专门的源码专题介绍,本文主要涉及的是AOP的基本概念以及如何使用,本文主要涉及到官网中的第5、6两大章
要是文章有帮助到你的话,记得点个赞吧!~
扫描下方二维码,关注我的公众号,回复加群,一起学习~
Spring官网阅读 | 总结篇相关推荐
- Spring官网阅读(三)自动注入
上篇文章我们已经学习了1.4小结中关于依赖注入跟方法注入的内容.这篇文章我们继续学习这结中的其他内容,顺便解决下我们上篇文章留下来的一个问题-----注入模型. 前言: 在看下面的内容之前,我们先要对 ...
- Spring官网阅读(一)容器及实例化
从今天开始,我们一起过一遍Spring的官网,为Spring源码的学习打好基础.在这个过程中,不会涉及过多底层的代码,更多是通过例子证明我们在官网得出的结论,希望自己可以坚持下来,给自己加个油!!! ...
- Spring官网阅读(二)(依赖注入及方法注入)
上篇文章我们学习了官网中的1.2,1.3两小节,主要是涉及了容器,以及Spring实例化对象的一些知识.这篇文章我们继续学习Spring官网,主要是针对1.4小节,主要涉及到Spring的依赖注入.虽 ...
- Spring 官网阅读指南
一.概述 Spring官网:https://spring.io/,界面如下: 二.各模块介绍 进入首页如上图,在首页官网会展示一些当前Spring比较流行的技术.可以看见导航栏有几个模块,信息如下: ...
- Spring官网阅读(四)BeanDefinition(上)
前面几篇文章已经学习了官网中的1.2,1.3,1.4三小结,主要是容器,Bean的实例化及Bean之间的依赖关系等.这篇文章,我们继续官网的学习,主要是BeanDefinition的相关知识,这是Sp ...
- Spring官网阅读(九)Spring中Bean的生命周期(上)
文章目录 生命周期回调 1.Bean初始化回调 2.Bean销毁回调 3.配置默认的初始化及销毁方法 4.执行顺序 5.容器启动或停止回调 Lifecycle 接口 LifecycleProcesso ...
- Spring官网和源码系列-如何阅读
作为一名Java从业者,有听过这么一句话,Spring源码至少看三遍才能算是一名软件工程师.对于读源码,大家就觉得很头疼,潜意识里感觉枯燥.难,基本就是能不读就不读,工作中够用就行了.不读源码的确可以 ...
- 最新的Spring官网如何下载Spring框架
最新的Spring官网如何下载Spring框架.特此写一篇简单的教程,供大家分享. 1. 首先打开Spring官网 https://spring.io/ 2. 点击页头 PROGECTS 选项 3. ...
- 怎样从spring官网下载jar包呢?
如果您以前从未从spring的官网下载过sping的jar包,可能在你第一次去官网下载的时候,会感觉到比较陌生,找不到需要下载的资源.下面这篇博文就教你如何从spring官网去下载jar包. 第一步: ...
最新文章
- 新概念英语第一册1-34课单词
- JVM规范系列第2章:Java虚拟机结构
- PATB1014福尔摩斯的约会
- C#学习笔记(集合)
- updatePanle总结
- Spark案例:Scala版统计单词个数
- cookie 和 session 区别
- 3D视觉——1.人体姿态估计(Pose Estimation)入门——使用MediaPipe含单帧(Signel Frame)与实时视频(Real-Time Video)
- 测试手机是否可以安装MRP软件和MRP游戏
- 免费动态域名解析软件dnspod每步nat123体会
- word中软回车和硬回车删除、替换
- 【转】游戏设计的秘密——翻译GDC2010 blizzard的一个演讲
- Silvaco TCAD仿真5——process simulation(Athena)
- 通过PyFMI读取FMU文件及PyFMI的安装教程
- Allegro和Alitum Desiger PCB文件互转方法
- 【MySQL基础教程】事务详细介绍
- android 展示虚拟键盘,在android TabLayout中显示虚拟键盘
- 斗地主滑动选牌出牌(Cocos Creator)
- 利用计算机考试电影,关于计算机二级的那些事儿
- Sketchup建模和渲染是否能取代3dsMax