spring IoC容器的实现。

控制反转是spring的重要概念。而实现控制反转的IoC容器具体又是如何实现呢。

IoC容器的目的是能够管理系统中各个对象之间的关系和依赖,为了实现这个功能,spring框架对Bean做了进一步抽象 BeanDefinition。

IoC容器的种类当然不止一种,定义IoC容器的规范则是 BeanFactory 类,它提供了IoC容器的各种接口。

用户可以通过BeanFactory接口方法getBean来获取Bean。

在BeanFactory的继承体系中,XmlBeanFactory处于最底层,它具体实现了IoC容器的各个接口。顾明思义,它可以读取XML定义的BeanDefinition。

我们常用的ApplacationContent正是利用了这一点。

在BeanFacory从XML加载到了BeanDefinition之后,一个可用的IOC容器也就诞生了。

时间: 2024-08-14 00:25:40

spring IoC容器的实现。的相关文章

spring ioc 容器概念

spring ioc 容器 一个java应用程序是有很多类组成的,这些类相互协作.相互作用来提供应用程序的表现行为.那些被其它类组合提供某些行为的类,称之为其它类的依赖(dependencies).利用软件工程中的组合模式(经常是继承模式的反模式)来说,我们经常利用某些类组合成其它类,不管这些类是通过构造函数还是setter方法或其它方法,那么组合成其它类的那些类就是这个组合类的依赖.当组合类要表现出的行为依赖这些类的时候,这些类必须被创建并注入给组合类. 在spring应用中,spring i

Spring IoC容器的初始化过程

Spring IoC容器的初始化包括 BeanDefinition的Resource定位.载入和注册 这三个基本的过程.IoC容器的初始化过程不包含Bean依赖注入的实现.Bean依赖的注入一般会发生在第一次通过getBean向容器索取Bean的时候. 先看以下代码: ApplicationContext context = new ClassPathXmlApplicationContext("ioc.xml"); Car car = (Car) context.getBean(&q

Mybaits3源码分析(二):扫描Mapper关联到spring IOC容器

首先讲讲mapper是怎么从配置到对象的. <!-- 采用自动扫描方式创建mapper bean(单个更新模式) --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.xxx.dao" /> <property name="sqlSe

Spring—IOC容器如何实例话Bean

前言  传统应用程序可以通过new和反射的方式来实例化Bean.而Spring Ioc容器则需要根据配置元数据使用反射机制来创建Bean.在Spring Ioc容器中根据Bean创建Bean实例有以下几种方式. (1).使用构造器实例化Bean (2).使用静态工厂实例化Bean (3).使用实例工厂实例化Bean 一.使用构造器实例化Bean:Spring IoC容器能使用默认空构造器也能使用有参数构造器两种方式创建Bean. (a).使用空构造器进行定义,使用此种方式,class属性指定的类

MyEclipse Spring 学习总结一 Spring IOC容器

一.Spring IOC容器---- Spring AllicationContext容器 程序的结构如下: 1.首先在MyEclipse 创建创建Java Project 2.创建好后,添加sping支持.在project上右击, MyEclipse->Add spring Capabilities. 3.之后会自动生成applicationContent.xml文件 1)创建HelloWorld.java public class HelloWorld { private String me

介绍 Spring IoC 容器和 bean

简介 本章涵盖了 Spring Framework实现控制翻转 (IoC) 的原则. IoC 有时也被称为依赖注入 (DI).这是一个对象定义他们依赖的过程,其中对象之间的相关性,也就是说,它们一起工作,只能通过构造函数参数,参数工厂方法或设置在其构造后的对象实例或者是从一个工厂方法返回的对象实例的属性上.容器在创建的 bean 注入这些依赖.这个过程是根本的反转,因此称为控制反转(IoC),bean 本身通过直接构造类,或作为 Service Locator(服务定位器)模式的机制,来控制其依

[Spring实战系列](6)配置Spring IOC容器的Bean

1. 简介 Spring提供了一个强大的IOC容器来管理组成应用的bean.为了利用容器服务,必须配置运行于Spring IOC容器中的Bean. 2. 解决方案 你可以通过XML文件,属性文件,注释甚至API来设置Spring IOC容器中的Bean. Spring允许你在一个或者多个bean配置文件中配置bean.对于简单的应用程序,可以在单个配置文件中集中配置bean.但是对于有许多bean的大型应用,你应该根据其功能将其分割到多个配置文件中. 3. 创建Spring配置 正如前面所讲的,

Spring IoC容器管理Action

Spring IoC容器管理Action有两种方式:DelegatingRequestProcessor.DelegatingActionProxy 不管采用哪一种方式,都需要随应用启动时创建ApplicationContext实例,由Struts负责在应用启动时创建ApplicationContext实例.Struts中提供了PlugIn的扩展点,可在应用启动和关闭时,创建或销毁某些资源. 使用ContextLoaderPluIn创建了ApplicationContext实例后,关键是如何将A

自己实现Spring IoC容器(四)IoC容器的Bug

Bug的发现 之前我自己写了一个类似Spring中的IoC容器自己实现Spring IoC容器(三)完成IoC容器,然后最近想在这个项目基础上把Spring的AOP也实现一下,然后就悲剧的发现了一句错误代码-- 这个错误代码就在edu.jyu.core.ClassPathXmlApplicationContext类的Object createBeanByConfig(Bean bean)方法中,下面是这个方法 /** * 根据bean的配置信息创建bean对象 * * @param bean *

Spring IOC 容器源码分析 - 创建单例 bean 的过程

1. 简介 在上一篇文章中,我比较详细的分析了获取 bean 的方法,也就是getBean(String)的实现逻辑.对于已实例化好的单例 bean,getBean(String) 方法并不会再一次去创建,而是从缓存中获取.如果某个 bean 还未实例化,这个时候就无法命中缓存.此时,就要根据 bean 的配置信息去创建这个 bean 了.相较于getBean(String)方法的实现逻辑,创建 bean 的方法createBean(String, RootBeanDefinition, Obj