Spring IoC 容器和核心概念

一、组件和组件管理概念

1、什么是组件?

回顾常规的三层架构处理请求流程:

整个项目就是由各种组件搭建而成的:

2、Spring 充当组件管理角色(IoC)

我们期待:

  • 有人替我们创建组件的对象
  • 有人帮我们保存组件的对象
  • 有人帮助我们自动组装
  • 有人替我们管理事务
  • 有人协助我们整合其他框架
  • ......

那么谁帮我们完成我们的期待,帮我们管理组件呢?

当然是 Spring 框架了!

组件可以完全交给 Spring 框架进行管理,Spring 框架替代了程序员原有的 new 对象和对象属性赋值动作等。

Spring 具体的组件管理动作包含:

  • 组件对象实例化
  • 组件属性赋值
  • 组件对象之间引用
  • 组件对象存活周期管理
  • ......

我们只需要编写元数据(配置文件)告知 Spring 管理哪些类组件和他们的关系即可。

注意:组件是映射到应用程序中所有可重用组件的 Java 对象,应该是可复用的功能对象。

  • 组件一定是对象
  • 对象不一定是组件

综上所述,Spring 充当一个组件容器,创建、管理、存储组件,减少了我们的编码压力,让我们更加专注进行业务编写。

3、组件交给 Spring 管理的优势

(1)降低了组件之间的耦合性:Spring IoC 容器通过依赖注入机制,将组件之间的依赖关系削弱,减少了程序组件之间的耦合性,使得组件更加松散地耦合。

(2)提高了代码的可重用性和可维护性:将组件的实例化过程、依赖关系的管理等功能交给Spring IoC 容器处理,使得组件代码更加模块化、可重用、更易于维护。

(3)方便了配置和管理:Spring IoC 容器通过 XML 文件或者注解,轻松的对组件进行配置和管理,使得组件的切换、替换等操作更加的方便和快捷。

(4)交给 Spring 管理的对象(组件),方可享受 Spring 框架的其他功能(AOP,声明事务管理)

二、Spring IoC 容器和容器实现

1、Spring IoC 容器介绍

Spring IoC 容器,负责实例化、配置和组装 bean(组件)。容器通过读取配置元数据来获取有关要实例化、配置和组装组件的指令。配置元数据以 XML、Java 注解或 Java 代码形式表现。它允许表达组成应用程序的组件以及这些组件之间丰富的相互依赖关系。

2、Spring IoC 容器接口和实现类

(1)Spring IoC 容器接口

BeanFactory 接口提供了一种高级配置机制,能够管理任何类型的对象,它是 Spring IoC 容器标准化超接口。

ApplicationContext 是 BeanFactory 的子接口。它扩展了以下功能:

  • 更容易与 Spring 的 AOP 功能集成
  • 消息资源处理(用于国际化)
  • 特定于应用程序给予此接口实现,例如 Web 应用程序的 WebApplicationContext

简而言之, BeanFactory 提供了配置框架和基本功能,而 ApplicationContext 添加了更多特定于企业的功能。 

(2)ApplicationContext 容器实现类

类型名简介
ClassPathXmlApplicationContext通过读取类路径下的 XML 格式的配置文件创建 IOC 容器对象
FileSystemXmlApplicationContext通过文件系统路径读取 XML 格式的配置文件创建 IOC 容器对象
AnnotationConfigApplicationContext通过读取Java配置类创建 IOC 容器对象
WebApplicationContext专门为 Web 应用准备,基于 Web 环境创建 IOC 容器对象,并将对象引入存入 ServletContext 域中

3、Spring IoC 容器管理配置方式

Spring IoC 容器使用多种形式的配置元数据。此配置元数据表示作为应用程序开发人员如何告诉 Spring 容器实例化、配置和组装应用程序中的对象。

Spring 框架提供了多种配置方式:XML 配置方式、注解方式和 Java 配置类方式

(1)XML 配置方式:是 Spring 框架最早的配置方式之一,通过在 XML 文件中定义 Bean 及其依赖关系、Bean 的作用域等信息,让 Spring IoC 容器来管理 Bean 之间的依赖关系。该方式从 Spring 框架的第一版开始提供支持。

(2)注解方式:从 Spring 2.5 版本开始提供支持,可以通过在 Bean 类上使用注解来代替 XML 配置文件中的配置信息。通过在 Bean 类上加上相应的注解(如 @Component,@Service, @Autowired 等),将 Bean 注册到 Spring IoC 容器中,这样 Spring IoC 容器就可以管理这些 Bean 之间的依赖关系。

(3)Java配置类方式:从 Spring 3.0 版本开始提供支持,通过 Java 类来定义 Bean、Bean 之间的依赖关系和配置信息,从而代替 XML 配置文件的方式。Java 配置类是一种使用 Java 编写配置信息的方式,通过 @Configuration、@Bean 等注解来实现 Bean 和依赖关系的配置。

三、Spring IoC / DI 概念总结

(1)IoC 容器

Spring IoC 容器,负责实例化、配置和组装 bean(组件)核心容器。容器通过读取配置元数据来获取有关要实例化、配置和组装组件的指令。

(2)IoC(Inversion of Control)控制反转

IoC 主要是针对对象的创建和调用控制而言的,也就是说,当应用程序需要使用一个对象时,不再是应用程序直接创建该对象,而是由 IoC 容器来创建和管理,即控制权由应用程序转移到 IoC 容器中,也就是“反转”了控制权。这种方式基本上是通过依赖查找的方式来实现的,即 IoC 容器维护着构成应用程序的对象,并负责创建这些对象。

(3)DI(Dependency Injection)依赖注入

DI 是指在组件之间传递依赖关系的过程中,将依赖关系在容器内部进行处理,这样就不必在应用程序代码中硬编码对象之间的依赖关系,实现了对象之间的解耦合。在 Spring 中,DI 是通过 XML配置文件或注解的方式实现的。它提供了三种形式的依赖注入:构造函数注入、Setter 方法注入和接口注入。

  • 27
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值