Spring系列二:IoC 容器
还君明珠双泪垂,恨不相逢未嫁时。

概述
Spring IoC容器是Spring框架的核心。只需要进行简单的容器配置,就可以将创建对象,使用对象,销毁对象联系在一起,从而管理从创建对象到销毁对象的整个生命周期。Spring容器使用依赖项注入(DI)来管理组成应用程序的组件。
Spring提供以下两种类型的容器。
BeanFactory容器ApplicationContext容器
BeanFactory
BeanFactory本质上就是一个高级工厂的接口,该工厂能够维护不同bean及其依赖项的对象。
BeanFactory使我们能够读取bean定义并使用bean工厂访问它们
InputStream is = new FileInputStream("beans.xml");
BeanFactory factory = new XmlBeanFactory(is);
//Get bean
HelloWorld obj = (HelloWorld) factory.getBean("helloWorld");
创建bean工厂的其他方法如下:
Resource resource = new FileSystemResource("beans.xml");
BeanFactory factory = new XmlBeanFactory(resource);
ClassPathResource resource = new ClassPathResource("beans.xml");
BeanFactory factory = new XmlBeanFactory(resource);
基本上都是使用getBean(String)方法在容器中检测并获取实例。 BeanFactory接口里面的方法非常简单
BeanFactory methods
BeanFactory接口主要有以下方法由客户端调用
boolean containsBean(String):如果BeanFactory包含与给定名称匹配的bean定义或bean实例,则返回trueObject getBean(String):返回给定名称注册的bean的实例。根据BeanFactory如何配置Bean,将返回单个实例或者共享实例或新创建的Bean。当找不到该bean(在这种情况下它将是NoSuchBeanDefinitionException),或者在实例化和准备该bean时发生异常时,将抛出BeansException。Object getBean(String,Class):返回给定名称注册的bean。返回的bean将被强制转换为给定的Class。如果无法投射bean,则将引发相应的异常(BeanNotOfRequiredTypeException)。此外,适用getBean(String)方法的所有规则Class getType(String name):返回具有给定名称的Bean的Class。如果找不到与给定名称对应的bean,则将引发NoSuchBeanDefinitionExceptionboolean isSingleton(String):确定给定名称注册的bean定义或bean实例是否为单例。如果找不到与给定名称对应的bean,则将引发NoSuchBeanDefinitionExceptionString [] getAliases(String):返回给定bean名称的别名(如果在bean定义中定义了别名)
ApplicationContext
ApplicationContext容器添加了更多企业特定功能,例如从属性文件解析文本消息的功能以及将应用程序事件发布到感兴趣的事件侦听器的功能。该容器由org.springframework.context.ApplicationContext接口定义。
ApplicationContext容器包含BeanFactory容器的所有功能,因此通常建议在BeanFactory上使用它。 BeanFactory仍可用于轻量级应用程序,例如移动设备或基于applet的应用程序等。
ApplicationContext类型
最常用的ApplicationContext实现如下:
FileSystemXmlApplicationContext–此容器从XML文件加载Bean的定义。在这里,您需要向构造函数提供XML bean配置文件的完整路径。ClassPathXmlApplicationContext–此容器从XML文件加载Bean的定义。在这里,您无需提供XML文件的完整路径,但需要正确设置CLASSPATH,因为此容器将在CLASSPATH中查找bean配置XML文件。WebXmlApplicationContext–此容器从Web应用程序中加载带有所有bean定义的XML文件。
如何创建ApplicationContext
用于应用程序上下文实例化的示例代码如下所示。
ApplicationContext context = new FileSystemXmlApplicationContext("beans.xml");
HelloWorld obj = (HelloWorld) context.getBean("helloWorld");

Spring系列二:IoC 容器的更多相关文章
- Spring系列之IOC容器
一.概述 IOC容器就是具有依赖注入功能的容器,IOC容器负责实例化.定位.配置应用程序中的对象及建立这些对象之间的依赖.应用程序无需直接在代码中new 相关的对象,应用程序由IOC容器进行组装.在S ...
- Spring系列之IOC的原理及手动实现
目录 Spring系列之IOC的原理及手动实现 Spring系列之DI的原理及手动实现 导语 Spring是一个分层的JavaSE/EE full-stack(一站式) 轻量级开源框架.也是几乎所有J ...
- Spring.NET的IoC容器(The IoC container)——简介(Introduction)
简介 这个章节介绍了Spring Framework的控制反转(Inversion of Control ,IoC)的实现原理. Spring.Core 程序集是Spring.NET的 IoC 容器实 ...
- Spring5源码解析系列一——IoC容器核心类图
基本概念梳理 IoC(Inversion of Control,控制反转)就是把原来代码里需要实现的对象创建.依赖,反转给容器来帮忙实现.我们需要创建一个容器,同时需要一种描述来让容器知道要创建的对象 ...
- 比Spring简单的IoC容器
比Spring简单的IoC容器 Spring 虽然比起EJB轻量了许多,但是因为它需要兼容许多不同的类库,导致现在Spring还是相当的庞大的,动不动就上40MB的jar包, 而且想要理解Spring ...
- Spring 系列教程之容器的功能
Spring 系列教程之容器的功能 经过前面几章的分析,相信大家已经对 Spring 中的容器功能有了简单的了解,在前面的章节中我们一直以 BeanFacotry 接口以及它的默认实现类 XmlBea ...
- 使用Spring.NET的IoC容器
使用Spring.NET的IoC容器 0. 辅助类库 using System; using System.Collections.Generic; using System.Linq; using ...
- Spring系列(二):Spring IoC/DI的理解
这几天重新学习了一下Spring,在网上找了相关的ppt来看,当看到Spring IoC这一章节的时候,先大致浏览了一下内容,有将近50页的内容,内心窃喜~QAQ~,看完这些内容能够对IoC有更深层次 ...
- spring源码系列(二):IOC接口设计分析
这里主要对springIOC接口体系进行简单的概述和分析,具体每个接口详细分析在下面目录: 参考内容: <Spring技术内幕:深入解析 Spring架构与设计原理> 和 <Spri ...
随机推荐
- Bzoj 1798: [Ahoi2009]Seq 维护序列seq(线段树区间操作)
1798: [Ahoi2009]Seq 维护序列seq Time Limit: 30 Sec Memory Limit: 64 MB Description 老师交给小可可一个维护数列的任务,现在小可 ...
- codeforces1209E2 状压dp,枚举子集
题意 给一个n行m列的矩阵,每一列可以循环移位,问经过任意次移位后每一行的最大值总和最大为多少. 分析 每一行的最大值之和最大,可以理解为每一行任意选择一个数使它们的和最大. 设\(dp[i][S]\ ...
- python一些问题
1.对于字符变量来说不需要深度复制,字符变量是不能改变的 2.文件读取结尾的判断是通过判读 line=self.fd.readline() if not line: //结束了 不用通过判断字符长度. ...
- oracle数据库体系结构
一.oracle数据库体系结构 基本组成: Oracle server:一般情况下是一个instance和一个database组成 一般:1个instance只能对应一个数据库. 特殊:1个数据库可以 ...
- JavaScript设计模式—装饰器模式
装饰器模式介绍 为对象添加新的功能,不改变其原有的结构和功能,原有的功能还是可以使用,跟适配器模式不一样,适配器模式原有的已经不能使用了,装饰器示例比如手机壳 UML类图和代码示例 Circle示原来 ...
- QString介绍
QString stores a string of 16-bit QChars, where each QChar corresponds one Unicode 4.0 character. 一. ...
- linux下如何更新当前的容器镜像?
docker commit <container_id> <container_image_name>
- VBA MD5加密算法(转)
) ) Private Function LShift(lValue, iShiftBits) Then LShift = lValue Exit Function Then Then LShift ...
- 深度学习之GAN对抗神经网络
1.结构图 2.知识点 生成器(G):将噪音数据生成一个想要的数据 判别器(D):将生成器的结果进行判别, 3.代码及案例 # coding: utf-8 # ## 对抗生成网络案例 ## # # # ...
- mvc导出数据到pdf
using iTextSharp;using iTextSharp.text;using iTextSharp.text.pdf; , , ") { System.Collections.A ...