
Spring源码分析系列文章
全栈编程网
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
使用Gradle构建Spring源码
一、下载Spring源码不同版本的Spring需要不同版本的Gradle,我这里下载的是5.0.2,Spring源码在git的地址为:https://github.com/spring-projects/spring-framework,自行下载自己想要的版本。下载解压以后,找到解压文件中的build.gradle,打开搜索gradleVersion,看你下载的spring源码需要哪个版本的gradle,我下载的版本需要4.3.1版本的gradle。二、下载安装Gradle...原创 2020-09-22 16:47:03 · 1176 阅读 · 0 评论 -
Spring源码解析系列文章(三)—— 容器的基础 BeanFactory 注册Bean
1、概述Bean 是Spring的核心,所谓容器就像一个大桶,Bean 就是大桶中的水。那么 桶是什么?水是怎么形成的?下面让我们一起揭晓!2、流程 ClassPathResource封装Spring配置资源 ...原创 2020-03-27 16:45:55 · 194 阅读 · 0 评论 -
Spring源码解析系列文章(X)—— Bean 的生命周期
1、概述这是一个面试题,很多时候都会被问到,通过最近一段时间的梳理,特发此文解决这个问题。Spring 的声明周期,这里研究的是 ApplicationContext 容器中加载 Bean的过程。ApplicationContext 可以认为是 BeanFactory 的升级版,它完成包括 BeanFactory的所有功能,BeanFactory 是加载 bean 配置的核心组件...原创 2020-03-26 15:56:27 · 192 阅读 · 0 评论 -
激活Aware
目录1、概述2、BeanFactoryAware 示例创建普通类创建BeanFactoryAwarespring配置spring引导类运行结果1、概述Spring 提供了一些 Aware接口,比如BeanFactoryAware、ApplicationContextAware、ResourceLoaderAware等,实现Aware接口的bean在被初始化之后,...原创 2020-03-24 17:16:05 · 193 阅读 · 0 评论 -
Spring 循环依赖
目录1、概述2、构造器循环依赖错误示例创建三个循环依赖类spring配置spring引导类运行结果分析3、setter 单例模式下循环依赖示例循环依赖类spring配置引导类运行结果分析4、prototype循环依赖错误示例上个例子改下spring配置运行结果分析1、概述循环依赖就是循环引用,例如 A 中有 B,B ...原创 2020-03-24 15:07:59 · 225 阅读 · 0 评论 -
factory-method
目录1、概述2、示例创建User类创建 factory-method 类spring配置spring引导类运行结果1、概述factory-method:通过工厂类创建Spring bean。两种方式:一种静态方法,一种动态方法。2、示例创建User类package thinking.in.spring.boot.samples.spring5.be...原创 2020-03-24 11:19:18 · 363 阅读 · 0 评论 -
FactoryBean
目录1、FactoryBean的作用2、FactoryBean 的示例被FactoryBean 创建的 beanFactoryBeanSpring 配置Spring启动类运行结果3、分析1、FactoryBean的作用一般情况下,Spring 通过反射机制利用 bean 的 class 属性获取实现类来实例化 bean。Spring 还提供了一种定制实例...原创 2020-03-23 17:59:36 · 179 阅读 · 0 评论 -
Spring源码解析系列文章(X)——扩展Spring自定义标签
目录1、创建承载自定义标签属性的类2、创建XSD3、创建解析XSD文件自定义标签的类4、创建Handler5、编写 spring.handlers 和 spring.schemas文件spring.handlersspring.schemas6、引入自定义标签7、验证1、创建承载自定义标签属性的类package thinking.in.spring.b...原创 2020-03-23 14:32:41 · 170 阅读 · 0 评论 -
Spring源码:BeanDefinitionParserDelegate
目录1、概述2、源码分析1、概述BeanDefinitionParserDelegate 是 BeanDefinition 解析委托类,就是专门解析由xml转成Document的类,Document里面是以 beans 为根节点的 spring配置文件的全部内容。由以下核心代码引入 BeanDefinitionParserDelegate:DefaultBeanDefini...原创 2019-12-12 10:37:36 · 944 阅读 · 0 评论 -
Spring源码:注册bean——XmlBeanDefinitionReader.registerBeanDefinitions(Documnt doc, Resource resouce)
目录1、截取XmlBeanDefinitionReader.registerBeanDefinitions(Documnt doc, Resource resouce) 部分代码2、XmlReaderContext、DefaultNamespaceHandlerResolver3、加载及注册bean,委托给DefaultBeanDefinitionDocumentReader...原创 2019-12-11 19:31:23 · 362 阅读 · 0 评论 -
Spring之@Nullable、@NonNull注解
@NonNull 可以标注在方法、字段、参数之上,表示对应的值不可以为空 @Nullable 注解可以标注在方法、字段、参数之上,表示对应的值可以为空原创 2019-12-11 15:50:42 · 1508 阅读 · 0 评论 -
Spring中运用 SAX的 EntityResolver
目录1、EntityResolver 介绍XSDDTD2、Spring源码中类图DTD方式XSD 方式1、EntityResolver 介绍官网解释:如果SAX应用程序需要实现自定义处理外部实体,则必须实现此接口并使用 setEntityResolver 方法 向 SAX 驱动器注册一个实例。对于 XML 文档的解析,SAX首先读取文档声明,根据文档声明去找 D...原创 2019-12-11 11:47:21 · 744 阅读 · 0 评论 -
解析 xml 为Document
目录分析问题:EntityResolverDefaultDocumentLoader源码:分析DefaultDocumentLoader#loadDocument方法是标准的 SAX 解析xml文件的代码,没有什么特殊处理的地方。 1.创建DocumentBuilderFactory 2.根据 DocumentBuilderFactory 创建 Document...原创 2019-12-11 11:36:40 · 253 阅读 · 0 评论 -
XmlValidationModeDetector源码分析
总结:验证 spring 的 是需要 DTD 模式还是 XSD模式,如果包含DOCTYPE表示 DTD模式 ,返回 2 表示 DTD验证模式,3 表示 XSD模式具体看代码中注释package org.springframework.util.xml;import java.io.BufferedReader;import java.io.CharConversionExc...原创 2019-12-11 11:15:31 · 191 阅读 · 0 评论 -
XML的验证模式
1、DTD 与 XSD的区别DTD(Document Type Definition)即文档类型定义,是一种 XML 约束模式语言,是 XML 文件的验证机制,属于 XML 文件组成的一部分。DTD 保证 xml文档格式是否正确。DTD包括:元素的定义规则,元素间关系的定义规则,元素可使用的属性,可使用的实体或符号规则。DTD 放在 XML 文档的头部声明,Spring使用 ...原创 2019-12-11 10:50:04 · 251 阅读 · 0 评论 -
Spring源码解析系列文章(二)—— 怎么调试Spring代码
目录1、Spring的生命周期是什么?2、Spring预留的口子,加载额外bean的口子3、为学习SpringBoot需要了解的注解1.组件自动装配1、Spring的生命周期是什么?在一次SpringBoot的讲座上,听大神讲SpringBoot是怎么根据Spring原有属性封装的,讲了Spring生命周期,这个概念很模糊,看了几次Spring源码分析的书,还是云里雾里的,...原创 2019-12-08 10:50:02 · 1350 阅读 · 1 评论 -
Spring源码解析系列文章(一)——源码导入IDEA
目录1、下载源码2、安装gradle3、运行转换命令4、IDEA导入源码1、下载源码1.安装git2.git下载代码下载地址:https://github.com/spring-projects/spring-framework.git2、安装gradle下载地址:https://gradle.org/next-steps/?version=4.8.1&a...原创 2019-12-08 10:02:00 · 313 阅读 · 0 评论