书籍摘要-spring源码深度解析

mexding      2022-04-10     210

关键词:

第 1 章:spring 整体架构和环境搭建

  spring 是分层的,主要分为网络层、数据库连接层、核心容器层、 AOP 层和测试层。

  核心容器中实现了 IOC 和依赖注入,方法是 BeanFactory。数据库连接层封装了 JDBC,兼容多种 ORM 框架。


第 2 章:容器的基本实现

  DefaultListableBeanFactory 是加载 Bean 的核心类,XmlBeanFactory 继承了这个类。

  分三步走,首先获取 XML 文件验证模式原理,然后将文件转换成 Document 对象,最后解析并注册BeanDefinition。

  加载资源文件原理?首先定义 Resource 接口封装了底层资源。然后针对不同来源的资源封装了不同的实现类。最后将资源控制权交给 XmlBeanDefinitionReader。

  获取 XML 文件验证模式原理?判断是否包含 DOCTYPE,包含就是 DTD,否则就是 XSD。


第 5 章:bean 的加载

  这章以接口 BeanFactory 及其实现类 XmlBeanFactory 为核心进行源码分析。

  spring 将循环依赖分为三种:一是构造器类型,这种无法解决,只能抛出 BeanCurrentlyInCreationException。二是 setter 类型,这种单例情况能够解决,方式是提前暴露创建中的 bean。三是 “prototype” 作用域的 bean,这种同样无法解决,因为 spring 不缓存 “prototype” 作用域的 bean ,无法提前暴露创建中的 bean。

  循环依赖解决方案?spring 创建单例 bean 时,为了避免循环依赖,不等 bean 创建完成就将其 ObjectFactory 暴露到缓存中,提供给其它 bean 依赖。


第 6 章:容器功能扩展

  这章以接口 ApplicationContext 为核心进行源码分析。


第 7 章:AOP

  这章以 AOP 实现原理为核心进行源码分析。


第 12 章:spring 消息

  Java Message Service( java 消息服务 ),简称 JMS,是 java 平台面向消息中间件的 api,用于程序间消息的异步通信。

  spring 通过整合如 activeMQ 等消息中间件,可以实现 JMS。




























spring源码分析注册解析的beandefinition

摘要:本文结合《Spring源码深度解析》来分析Spring5.0.6版本的源代码。若有描述错误之处,欢迎指正。 对配置文件解析完成后,获取的beanDefiniton已经可以进行使用了,剩下的唯一工作就是注册了,也就是processBeanDefinition方法... 查看详情

spring源码深度解析-《源码构建》

1、导入spring-framework-3.2.x\\spring-beans之前先导入源码spring-framework-3.2.x\\spring-core,否则报错:2、导入spring-asm-repack-5.0.4.jar和spring-cglib-repack-3.1.jarhttps://blog.csdn.net/baidu_19473529/article/details/ 查看详情

spring源码分析bean标签的解析及注册

摘要:本文结合《Spring源码深度解析》来分析Spring5.0.6版本的源代码。若有描述错误之处,欢迎指正。 在上一篇中提到过Spring中的标签包括默认标签和自定义标签两种,而两种标签的用法以及解析方式存在着很大的不同。本... 查看详情

spring源码分析获取document

摘要:本文结合《Spring源码深度解析》来分析Spring5.0.6版本的源代码。若有描述错误之处,欢迎指正。 这一篇开始进行Document加载了,XmlBeanFactoryReader类对于文档读取并没有亲历亲为,而是委托给了DocumentLaoder去执行,DocumentLo... 查看详情

spring源码深度解析

Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性的角度而言,绝大部分Java应用都可以从... 查看详情

读《spring源码深度解析》随记

  bean是Spring中最核心的东西,因为Spring就像是个大水桶,而bean就像是容器中的水,水桶脱离了水便也没什么用处了。   一、核心类:  1.DefaultListableBeanFactory  XmlBeanFactory继承自 DefaultListableBean... 查看详情

《spring源码深度解析》第三章默认标签的解析

  上一章提到了,默认标签和自定义标签要分开解析。本章重点介绍默认标签的解析。在 DefaultBeanDefinitionDocumentReader中:privatevoidparseDefaultElement(Elementele,BeanDefinitionParserDelegatedelegate){if(delegate.nodeNameEquals(ele,IMPORT 查看详情

spring事务transaction源码深度解析

...据库user2.创建一个maven项目 3.通过xml形式配置事务1)创建Spring命名空间2)开启事务配置3)创建UserService类4.测试事务1) 抛出RuntimeException 2)注释掉RuntimeException二、事务开启入口TxNamespaceHandler AnnotationDrivenBeanDefi 查看详情

spring源码分析bean的加载

摘要:本文结合《Spring源码深度解析》来分析Spring5.0.6版本的源代码。若有描述错误之处,欢迎指正。  经过前面的分析,我们终于结束了对XML配置文件的解析,接下来将会面临更大的挑战,就是对bean加载的探索。bean加... 查看详情

spring源码深度解析,事务案例讲解高级

Spring的整体架构Spring框架是一个分层架构,它包含一系列的功能要素,并被分为大约20个模块,如下图所示 这些模块被总结为以下几个部分:CoreContainerCoreContainer(核心容器)包含有Core、Beans、Context和ExpressionLanguage模块Core和Bean... 查看详情

spring事务transaction源码深度解析(代码片段)

...据库user2.创建一个maven项目 3.通过xml形式配置事务1)创建Spring命名空间2)开启事务配置3)创建UserService类4.测试事务1) 抛出RuntimeException 2)注释掉RuntimeException二、事务开启入口TxNamespaceHandler AnnotationDrivenBeanDefi 查看详情

spring5源码深度解析-----spring的整体架构和环境搭建

gradle安装Gradle是一个基于JVM的构建工具,是一款通用灵活的构建工具,支持maven,Ivy仓库,支持传递性依赖管理,而不需要远程仓库或者是pom.xml和ivy.xml配置文件,基于Groovy,build脚本使用Groovy编写,需要到gradle官网下载对应版本... 查看详情

spring框架源码@configuration源码深度解析(代码片段)

    @Configuration注解是spring-context模块提供的一个给开发者使用的配置类注解,开发者可以通过@Configuration注解来定义配置类,也可以使用xml形式注入。        例如配置数据库配置,定义一个配置类,... 查看详情

spring源码分析abstractbeandefinition属性

摘要:本文结合《Spring源码深度解析》来分析Spring5.0.6版本的源代码。若有描述错误之处,欢迎指正。 在上一篇中已经完成了XML文档到GenericBeanDefiniton的转化,也就是说,XML中所有的配置都在GenericBeanDefinition的实例类中找到... 查看详情

spring源码分析(二十二)功能扩展

 摘要:本文结合《Spring源码深度解析》来分析Spring5.0.6版本的源代码。若有描述错误之处,欢迎指正。 目录一、增加SPEL语言的支持二、增加属性注册编辑器1.使用自定义属性编辑器2.注册Spring自带的属性编辑器CustomDateEditor... 查看详情

spring源码分析(二十三)beanfactory的后处理

摘要:本文结合《Spring源码深度解析》来分析Spring5.0.6版本的源代码。若有描述错误之处,欢迎指正。 目录一、激活注册的BeanFactoryPostProcessor1.BeanFactoryPostProcessor的典型应用:PropertyPlaceholderConfigurer2.使用自定义BeanFactoryPostProces... 查看详情

《mybatis3源码深度解析》图书简介

一、图书封面二、书籍目录前言4第1篇Mybatis3源码7第1章搭建Mybatis源码环境71.1Mybatis3简介71.2环境准备71.3获取Mybatis源码81.4导入Mybatis源码到IDE101.5HSQLDB数据库简介131.6本章小结16第2章JDBC规范详解172.1JDBCAPI简介172.1.1建立数据源连接182... 查看详情

《mybatis3源码深度解析》图书简介

一、图书封面二、书籍目录前言4第1篇Mybatis3源码7第1章搭建Mybatis源码环境71.1Mybatis3简介71.2环境准备71.3获取Mybatis源码81.4导入Mybatis源码到IDE101.5HSQLDB数据库简介131.6本章小结16第2章JDBC规范详解172.1JDBCAPI简介172.1.1建立数据源连接182... 查看详情