spring 的IOC原理
来源:互联网 发布:知乎app收藏 编辑:程序博客网 时间:2024/05/12 22:59
Spring的设计理念:
Spring的核心组件:bean 、context、core,这三个中最核心的是bean,bean就像舞台的演员一样,context就像背景一样,core就像道具一样。Sping 解决的关键问题就是如何管理这些bean,spring把对象包裹在bean中达到对对象的管理和一些额外操作,把对象之间的依赖关系转而用配置文件来管理,就是它的依赖注入机制,这个依赖注入关系在一个叫做IOC的容器中进行管理。Spring构建一个数据结构,根据这个数据结构设计它的生存环境context,并让它在这个生存环境中不停的发现、建立、维护bean之间的关系,context就是一个bean关系的集合,这个关系的集合就叫做IOC容器。Core就是发现、建立、维护每个bean之间关系所需要的一系列工具。这就是spring的设计理念。
Bean组件:
(1) bean组件主要解决三件事:定义、创建、解析bean,bean是工厂模式beanfactory创建的,bean主要由beanDefinition定义描述的,bean的解析主要是对spring配置文件解析。
beanfactory是顶级接口,他的三个子类ListableBeanFactory、HierarchicalBeanFactory、AutoAireCapableBeanFactory。他们最终的默认实现类是DefaultListableBeanFactory,它实现的所有的接口。每个接口都有它使用的场合,主要是区分spring内部对象的传递和转化过程中对对象的数据访问所作的限制。ListableBeanFactory 接口表示这些 Bean 是可列
HierarchicalBeanFactory 表示Bean 是有继承关系的,AutowireCapableBeanFactory 接口定义 Bean 的自动装配规则。
(3)bean的定义就是完整的描述spring配置文件中节点的所有信息。Spring成功解析配置文件定义的节点后, spring内部就将它转化为beandefinition对象,以后所有的操作都是对这个对象完成的。
Context组件
Context就是给spring提供一个运行时环境,以保存各个对象的状态,context环境的构建。
(1) context继承了5个接口,用于扩展context的功能。继承beanFactory,容器的运行主体对象是bean,beanfactory用于创建bean。ApplicationContext继承了resourceLoader, ,使得 ApplicationContext 可以访问到任何外部资源。
(2)ApplicationContext 的子类主要包含两个方面:configurableApplicationContext说明context是可修改的,用户可以动态的添加修改已有的配置信息,他下面的多个子类:
其中最经常使用的是可更新的 Context,即 AbstractRefreshableApplicationContext 类。
WebApplicationContext 顾名思义,就是为 web 准备的 Context 他可以直接访问到 ServletContext,通常情况下,这个接口使用的少。
(3)application要做的事情:标识一个应用环境,利用beanfactory创建bean对象,保存对象的关系表,能够捕获各种事件。
Core 是spring的演出时的道具,看看这个道具:
(1) resource接口封装了各种可能的资源类型,对使用者来说屏蔽了文件类型的不同。Resource继承了inputStreamSource接口,这个接口提供了getInputStreamSource方法,返回inputStream类,所有的资源都可以通过inputStream类获得,屏蔽了资源提供者。资源的加载也是通过ResourceLoader接口完成的,屏蔽了资源的加载者,他的默认实现类defaultResourceLoader.
(2) Context资源的加载、解析、描述工作委托给了ResourcePatternResolver类来完成,他把资源的加载、解析和定义整合在一起便于其他组件使用。
IOC容器的构建:
IOC容器就是context组件结合其他两个组件构成bean的关系网,构建的入口就是abstractApplicationContext的refresh入口。步骤:注册可能感兴趣的事件;创建bean的实例对象;触发被监听的事件
(1) 创建和配置beanFactory,通过AbstractRefreshableApplicationContext. refreshBeanFactory 方法创建更新beanfactory,beanFactory已存在就更新,如果没有就创建.loadBeanDefinitions(beanFactory)把用户自定义的数据结构转化为IOC容器特定的数据结构。
(2) 创建好 BeanFactory 后,接下去添加一些 Spring 本身需要的一些工具类,这个操作在 AbstractApplicationContext 的 prepareBeanFactory 方法完成。
- spring 的IOC原理
- Spring的IOC原理
- Spring的IOC原理
- Spring的IOC原理
- Spring的IOC原理
- Spring的IOC原理
- Spring的IOC原理
- Spring的IOC原理
- Spring的IOC原理
- Spring的IOC原理
- Spring IOC的原理
- Spring 的 IOC原理
- Spring的IOC原理
- Spring的IOC原理
- Spring的IOC原理
- spring的ioc原理
- spring的ioc原理
- Spring的IOC原理
- shell编程基础【四】
- GPS编码格式及C语言解码
- 计算机编译原理
- grep命令详解
- 1A
- spring 的IOC原理
- 关于 sizeof() 的一些思考
- java获取当前时间
- JAVA内部类的作用、方法、使用
- 使用内部类让Java实现“多继承”
- CPP学习备忘[7] 对象生灭
- xargs命令简介
- printf到printk的转变
- shell编程基础【五】 ---函数