还君明珠双泪垂,恨不相逢未嫁时。

概述

Spring IoC容器是Spring框架的核心。只需要进行简单的容器配置,就可以将创建对象,使用对象,销毁对象联系在一起,从而管理从创建对象到销毁对象的整个生命周期。Spring容器使用依赖项注入(DI)来管理组成应用程序的组件。

Spring提供以下两种类型的容器。

  1. BeanFactory 容器
  2. 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接口主要有以下方法由客户端调用

  1. boolean containsBean(String):如果BeanFactory包含与给定名称匹配的bean定义或bean实例,则返回true
  2. Object getBean(String):返回给定名称注册的bean的实例。根据BeanFactory如何配置Bean,将返回单个实例或者共享实例或新创建的Bean。当找不到该bean(在这种情况下它将是NoSuchBeanDefinitionException),或者在实例化和准备该bean时发生异常时,将抛出BeansException
  3. Object getBean(String,Class):返回给定名称注册的bean。返回的bean将被强制转换为给定的Class。如果无法投射bean,则将引发相应的异常(BeanNotOfRequiredTypeException)。此外,适用getBean(String)方法的所有规则
  4. Class getType(String name):返回具有给定名称的BeanClass。如果找不到与给定名称对应的bean,则将引发NoSuchBeanDefinitionException
  5. boolean isSingleton(String):确定给定名称注册的bean定义或bean实例是否为单例。如果找不到与给定名称对应的bean,则将引发NoSuchBeanDefinitionException
  6. String [] getAliases(String):返回给定bean名称的别名(如果在bean定义中定义了别名)

ApplicationContext

ApplicationContext容器添加了更多企业特定功能,例如从属性文件解析文本消息的功能以及将应用程序事件发布到感兴趣的事件侦听器的功能。该容器由org.springframework.context.ApplicationContext接口定义。

ApplicationContext容器包含BeanFactory容器的所有功能,因此通常建议在BeanFactory上使用它。 BeanFactory仍可用于轻量级应用程序,例如移动设备或基于applet的应用程序等。

ApplicationContext类型

最常用的ApplicationContext实现如下:

  1. FileSystemXmlApplicationContext –此容器从XML文件加载Bean的定义。在这里,您需要向构造函数提供XML bean配置文件的完整路径。
  2. ClassPathXmlApplicationContext –此容器从XML文件加载Bean的定义。在这里,您无需提供XML文件的完整路径,但需要正确设置CLASSPATH,因为此容器将在CLASSPATH中查找bean配置XML文件。
  3. WebXmlApplicationContext –此容器从Web应用程序中加载带有所有bean定义的XML文件。

如何创建ApplicationContext

用于应用程序上下文实例化的示例代码如下所示。

ApplicationContext context = new FileSystemXmlApplicationContext("beans.xml");
HelloWorld obj = (HelloWorld) context.getBean("helloWorld");

最新文章

  1. git 实用操作
  2. 在Flex4中嵌入字体
  3. ArcEngine将线符号化为立方体状
  4. Python快速建站系列-Part.Four-首页内容填充
  5. 烂泥:【解决】Ubuntu下使用SSH连接centos系统很慢
  6. 14条建议,使你的IT职业生涯更上一层楼
  7. JavaScript基本概念(数组)
  8. iOS开发——UITableView(未完,待续...)
  9. Oracle检查锁及其等待的行ROWID
  10. Android Studio 提高工作效率的奇技
  11. 一个基于注解的orm简单实现(二):实现思路
  12. inux中shell变量$#,$@,$0,$1,$2的含义
  13. 【JAVAEE学习笔记】hibernate02:实体规则、对象状态、缓存、事务、批量查询和实现客户列表显示
  14. linux防火墙简单的使用
  15. 【面试】Spring事务面试考点吐血整理(建议珍藏)
  16. (24)How generational stereotypes hold us back at work
  17. 牛客网暑期ACM多校训练营 第九场
  18. Daily Scrumming* 2015.12.21(Day 13)
  19. 『PyTorch』第三弹_自动求导
  20. 复习整理2:juit

热门文章

  1. dsu on tree(树上启发式合并)
  2. 【java设计模式】-03抽象工厂模式
  3. [NOIP2018]:旅行(数据加强版)(基环树+搜索+乱搞)
  4. ./与sh区别
  5. 0ctf-ezdoor-复现分析
  6. Mysql忘记密码,支持中文,tab补全
  7. LC 881. Boats to Save People
  8. JavaScript中原型链存在的问题解析
  9. Laravel中Session的使用
  10. PHP拼多多模式,砍价免费拿商品算法