本文主要基于 Spring 5.0.6.RELEASE 摘要: 原创出处 http://cmsblogs.com/?p=2658 「小明哥」,谢谢! 作为「小明哥」的忠实读者,「老艿艿」略作修改,记录在理解过程中,参考的资料. 先看一段熟悉的代码: ClassPathResource resource = new ClassPathResource("bean.xml"); // <1>DefaultListableBeanFactory factory = new Def…
本文主要分析 spring 中 BeanDefinition 的加载,对于其解析我们在后面的文章中专门分析. BeanDefinition 是属于 Spring Bean 模块的,它是对 spring bean 的统一抽象描述定义接口,我们知道在spring中定义bean的方式有很多种,如XML.注解以及自定义标签,同事Bean的类型也有很多种,如常见的工厂Bean.自定义对象.Advisor等等,我们在分析加载BeanDefinition之前,首先来了解它的定义和注册设计. 上面类图我们做一个…
本文主要讲解Spring加载xml配置文件的方式,跟踪加载BeanDefinition的全过程. 源码分析 源码的入口 ClassPathXmlApplicationContext构造函数 new ClassPathXmlApplicationContext(“spring.xml”)用于加载CLASSPATH下的Spring配置文件,将配置文件传给构造函数,然后调用类内部的另外一个重载方法. 从构造函数中,可以看到一共做了3件事 super(parent) super(parent)的作用是为…
dubbo的SPI机制与JDK的SPI机制对比        dubbo一款阿里一款开源的RPC框架,他本身是一款非常复杂的系统,我们主要针对里边的一些核心点来展开分析,其中duboo里的一种核心机制叫SPI( Service Provider Interface)服务发现机制,他是基于原生jdk的SPI机制演化而来.在分析duboo的ExtensionLoader之前,我们先大致了解一下标准JDK的SPI机制.一个最经典的JDK的SPI机制,就是java数据库驱动JDBC,其实JDK自带的jd…
Spring源码版本:4.3.23.RELEASE 一.加载XML配置 通过XML配置创建Spring,创建入口是使用org.springframework.context.support.ClassPathXmlApplicationContext类,创建容器的代码如下: package hello; import org.springframework.context.ApplicationContext; import org.springframework.context.support…
首先我们不要在学习Spring的开始产生畏难情绪.Spring没有臆想的那么高深,相反,它帮我们再项目开发中制定项目框架,简化项目开发.它的主要功能是将项目开发中繁琐的过程流程化,模式化,使用户仅在固定文件中增加特定标签并实现特定逻辑层的代码就能完成项目开发.下面我们来分析web项目启动时bean的初始化过程. 我们遵循类的依赖,引用关系来理清spring在这一过程中的架构和细节实现.java web项目入口在web.xml,Spring在此配置入口servlet完成bean的加载.Dispat…
Spring源码版本:4.3.23.RELEASE 一.加载过程概览 Spring容器加载过程可以在org.springframework.context.support.AbstractApplicationContext#refresh方法看到总体过程,具体细节需要断点调试: @Override public void refresh() throws BeansException, IllegalStateException { synchronized (this.startupShut…
本文主要基于 Spring 5.0.6.RELEASE 摘要: 原创出处 http://svip.iocoder.cn/Spring/IoC-load-Resource/ 在学 Java SE 的时候,我们学习了一个标准类 java.net.URL,该类在 Java SE 中的定位为统一资源定位器(Uniform Resource Locator),但是我们知道它的实现基本只限于网络形式发布的资源的查找和定位.然而,实际上资源的定义比较广泛,除了网络形式的资源,还有以二进制形式存在的.以文件形式…
该系列文章是本人在学习 Spring 的过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring 源码分析 GitHub 地址 进行阅读 Spring 版本:5.1.14.RELEASE 开始阅读这一系列文章之前,建议先查看<深入了解 Spring IoC(面试题)>这一篇文章 该系列其他文章请查看:<死磕 Spring 之 IoC 篇 - 文章导读> BeanDefinition 的加载阶段(XML 文件) 上一篇文章 <Bean 的&qu…