Spring系列二:IoC 容器
2024-09-05 09:21:11
还君明珠双泪垂,恨不相逢未嫁时。
概述
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
实例,则返回true
Object 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
,则将引发NoSuchBeanDefinitionException
boolean isSingleton(String)
:确定给定名称注册的bean
定义或bean
实例是否为单例。如果找不到与给定名称对应的bean,则将引发NoSuchBeanDefinitionException
String [] 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");
最新文章
- git 实用操作
- 在Flex4中嵌入字体
- ArcEngine将线符号化为立方体状
- Python快速建站系列-Part.Four-首页内容填充
- 烂泥:【解决】Ubuntu下使用SSH连接centos系统很慢
- 14条建议,使你的IT职业生涯更上一层楼
- JavaScript基本概念(数组)
- iOS开发——UITableView(未完,待续...)
- Oracle检查锁及其等待的行ROWID
- Android Studio 提高工作效率的奇技
- 一个基于注解的orm简单实现(二):实现思路
- inux中shell变量$#,$@,$0,$1,$2的含义
- 【JAVAEE学习笔记】hibernate02:实体规则、对象状态、缓存、事务、批量查询和实现客户列表显示
- linux防火墙简单的使用
- 【面试】Spring事务面试考点吐血整理(建议珍藏)
- (24)How generational stereotypes hold us back at work
- 牛客网暑期ACM多校训练营 第九场
- Daily Scrumming* 2015.12.21(Day 13)
- 『PyTorch』第三弹_自动求导
- 复习整理2:juit
热门文章