Spring源码解析-ioc容器的设计 1 IoC容器系列的设计:BeanFactory和ApplicatioContext 在Spring容器中,主要分为两个主要的容器系列,一个是实现BeanFactory接口的简单容器系列,这系列容器只实现了容器的最基本的功能: 另一个是ApplicationContext应用上下文,它作为容器的高级形态而存在. 应用上下文在简单容器的基础上,增加了许多面向框架的特性,同时对应用环境作了许多适配.这两个容器系列,就基本满足用户对IoC容器使用的大部分需求了.…
目录 Spring IoC容器 ApplicationContext设计解析 BeanFactory ListableBeanFactory HierarchicalBeanFactory MessageSource ApplicationEventPublisher EnvironmentCapable ResourceLoader和ResourcePatternResolver Spring IoC容器设计复盘 本文思维导图 在Spring框架中最重要的是Spring IoC容器,它是Spr…
目录 一.容器概述 二.核心类源码解读 三.模拟容器获取Bean ======================= 一.容器概述 spring IOC控制反转,又称为DI依赖注入:大体是先初始化bean再注入使用的过程.本系列默认JDK8源码.容器接口设计图如下: 如上图,可见主要有两条主线: 1.BeanFactory->HierarchicalBeanFactory->ConfigurableBeanFactory BeanFactory接口定义了基本的Ioc容器的规范,包括getBean(…
在Spring中,最基本的IOC容器接口是BeanFactory - 这个接口为具体的IOC容器的实现作了最基本的功能规定 - 不管怎么着,作为IOC容器,这些接口你必须要满足应用程序的最基本要求: public interface BeanFactory {     //这里是对FactoryBean的转义定义,因为如果使用bean的名字检索FactoryBean得到的对象是工厂生成的对象,     //如果需要得到工厂本身,需要转义            String FACTORY_BEA…
上面我们已经知道了IOC的建立的基本步骤了,我们就可以用编码的方式和IOC容器进行建立过程了.其实Spring已经为我们提供了很多实现,想必上面的简单扩展,如XMLBeanFacroty等.我们一般是用ApplicationContext这个接口,这个接口实现了基本的功能外,还添加了很多相应的功能,根据看下面的源码我来看看是怎么实现更多的功能的. public interface ApplicationContext extends ListableBeanFactory, Hierarchic…
1.IOC容器是什么? IOC(Inversion of Control)控制反转:本来是由应用程序管理的对象之间的依赖关系,现在交给了容器管理,这就叫控制反转,即交给了IOC容器,Spring的IOC容器主要使用DI方式实现的.不需要主动查找,对象的查找.定位和创建全部由容器管理. 在程序中不创建对象.以前我们要调用一个对象的方法,首先要new一个对象.但使用IOC容器,在代码中不直接与对象连接,而是在配置文件中描述要使用哪一个对象.容器负责将这些联系在一起. IOC容器的基本功能规范是由Be…
IoC最核心就是两个过程:IoC容器初始化和IoC依赖注入,下面通过简单的图示来表述其中的关键过程:…
总结 在SpringApplication#createApplicationContext()执行时创建IOC容器,默认DefaultListableBeanFactory 在AbstractApplicationContext#refresh()方法内执行invokeBeanFactoryPostProcessors(beanFactory);中完成BeanDefinition的资源定位.加载和注册 singleton的bean在AbstractApplicationContext#fini…
目录 继承层次图概览 ConfigurableApplicationContext分析 AbstractApplicationContext GenericApplicationContext GenericXmlApplicationContext StaticApplicationContext ResourceAdapterApplicationContext GenericGroovyApplicationContext AnnotationConfigApplicationContex…
初始化IoC容器(Spring源码阅读) 我们到底能走多远系列(31) 扯淡: 有个问题一直想问:各位你们的工资剩下来会怎么处理?已婚的,我知道工资永远都是不够的.未婚的你们,你们是怎么分配工资的? 毕竟,对自己的收入的分配差不多体现了自己的现状,以及自己对自己未来有什么样的期许~ 主题: 本人在阅读源码基本参考了<Spring技术内幕:深入解析 Spring架构与设计原理>,很不错的书籍,建议大家阅读. 初始化IoC容器:1,resource定位 2,BeanDefinition载入 3,把…