2、Spring之IOC概述

发布时间 2023-07-21 00:10:38作者: Javaer1995

2.1、IOC思想

2.1.1、传统方式获取资源

组件主动地从容器中获取所需要的资源,在这样的模式下开发人员往往需要知道在具体容器中特定资源的获取方式;

提高了学习成本,同时也降低了开发的效率。

2.1.2、控制反转方式获取资源

由容器主动地将资源推送给需要的组件,开发人员不需要知道容器是如何创建资源对象的,只需要提供接收资源的方式即可;

极大地降低了学习成本,提高了开发的效率。

2.1.3、DI

DI(Dependency Injection):依赖注入,即组件以一些预先定义好的方式(例如:setter 方法)接受来自于容器的资源注入。

IOC(Inversion of Control) 是一种控制反转的思想, 而 DI 是对 IOC 的一种具体实现。

2.2、IOC容器的实现

Spring 的 IOC 容器就是 IOC 思想的一个落地的产品实现。

IOC 容器管理的组件也叫做 bean,在创建bean 之前,首先需要创建 IOC 容器。

Spring 提供了 IOC 容器的两种实现方式:BeanFactory 和 ApplicationContext

2.2.1、BeanFactory

这是 IOC 容器的基本实现,是 Spring 内部使用的接口;

面向 Spring 本身,不提供给开发人员使用。

2.2.2、ApplicationContext

ApplicationContext 是 BeanFactory 的子接口,提供了更多高级特性;

面向 Spring 的使用者,几乎所有场合都使用 ApplicationContext 而不是底层的 BeanFactory。

2.2.2.1、ApplicationContext的主要实现类

image

类型名 简介
ClassPathXmlApplicationContext 通过读取类路径下的 XML 配置文件来创建 IOC 容器对象(常用)
FileSystemXmlApplicationContext 通过读取文件系统路径下的 XML 配置文件来创建 IOC 容器对象(少用)
ConfigurableApplicationContext ApplicationContext 的子接口,包含一些扩展方法refresh() 和 close() ,让 ApplicationContext 具有启动、关闭和刷新上下文的能力
WebApplicationContext 专门为 Web 应用准备,基于 Web 环境创建 IOC 容器对象,并将对象引入存入 ServletContext 域中