1.IOC思想
IOC:反转控制
-
获取资源的传统方式
在应用程序中的组件需要获取资源时,传统的方式是组件主动的从容器中获取所需要的资源,在这样的模式下开发人员往往需要直到在具体容器中的特定资源的获取方式,增加学习成本,同时降低开发效率。
-
反转控制方式获取资源
反转控制思想完全颠覆了应用程序组件获取资源的传统方式:反转了资源的获取方向——改由容器主动的将资源推送给需要的组件,开发人员不需要知道容器是如何创建资源对象的,只需要提供接受资源的方式即可,极大的降低了学习成本,提高了开发的效率。这种行为也成为查找的被动形式。
-
DI
DI:依赖注入。DI是IOC的另一种表述方式:即组件以一些预定义好的方式接受来自于容器的资源注入。相对于IOC而言,这种表述更直接。IOC就是一种反转控制思想,而DI是对IOC的一种具体实现。
2.IOC容器在Spring中的实现
Spring的IOC容器就是IOC思想的一个落地的产品实现。IOC容器中管理的组件也叫做bean。在创建bean之前,首先需要创建IOC容器。Spring提供了IOC容器的两种实现方式:
-
BeanFactory
这是IOC容器的基本实现,是Spring内部使用的接口。面向Spring本身,不提供给开发人员使用。
-
ApplicationContext
Beanfactory的子接口,提供了更多高级的特性。面向Spring的使用者,几乎所有场合都使用ApplicationContext,而不是底层的BeanFactory。
-
ApplicationConetxt的主要实现类
类型名 简介 ClassPathXmlApplicationContext 通过读取类路径下的 XML 格式的配置文件创建 IOC 容器 对象 FileSystemXmlApplicationContext 通过文件系统路径读取 XML 格式的配置文件创建 IOC 容 器对象 ConfigurableApplicationContext ApplicationContext 的子接口,包含一些扩展方法 refresh() 和 close() ,让 ApplicationContext 具有启动、 关闭和刷新上下文的能力。 WebApplicationContext 专门为 Web 应用准备,基于 Web 环境创建 IOC 容器对 象,并将对象引入存入 ServletContext 域中。