Spring IOC核心思想学习

Spring IoC(Inversion of Control,控制反转)是 Spring 框架的核心概念之一,用于实现对象的依赖注入(DI,Dependency Injection)。通过 IoC,Spring 可以管理对象的生命周期和依赖,从而减少对象之间的耦合,促进代码的可维护性和可测试性


1、Spring IOC的核心概念

在学习Spring Ioc之前,有一些概念必须搞懂

什么是组件?

组件就是bean,bean就是可以复用的Java对象

什么是Spring中的容器?

容器就是装东西的,类似生活中的锅碗瓢盆,在Java这,容器是用来装对象的,就是装bean的!它的作用是创建、配置和管理 Spring 应用程序中的对象(Bean),并处理它们之间的依赖关系。

什么是控制反转(IOC)?

控制反转是一种设计原则!之前创建对象是在类中编码new一个对象,但是现在是将对象的创建和依赖关系的管理交给容器处理,而不是在对象内部硬编码这些逻辑。通过这种方式,对象的控制权从应用程序代码转移到了容器(如 Spring 容器)

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

综上所述:

Sping IOC的核心思想是将对象的创建和依赖关系的管理从应用程序代码中转移到Spring容器中进行管理。在传统的Java应用程序中,应用程序代码通常负责创建和管理对象之间的依赖关系,这样的实现会导致代码的紧耦合,难以维护和扩展。而使用Spring IOC容器,应用程序代码只需要提供要使用的对象的接口,容器会根据配置文件或注解信息负责创建和管理对象之间的依赖关系。

2、Spring IOC主要作用

在Spring IOC出现之前,我们希望有人替我们创建组件的对象、有人帮我们保存组件的对象、有人帮助我们自动组装、有人替我们管理事务、有人协助我们整合其他框架....于是Spring IOC它来了它来了。

Spring IOC就是来帮我们管理组件(bean)的。

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

Spring具体的组件管理动作包含: 组件对象实例化、 组件属性属性赋值、组件对象之间引用、组件对象存活周期管理等等...

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

Spring IOC的优势有

1. 降低了组件之间的耦合性:Spring IoC容器通过依赖注入机制,将组件之间的依赖关系削弱,减少了程序组件之间的耦合性,使得组件更加松散地耦合。
2. 提高了代码的可重用性和可维护性:将组件的实例化过程、依赖关系的管理等功能交给Spring IoC容器处理,使得组件代码更加模块化、可重用、更易于维护。
3. 方便了配置和管理:Spring IoC容器通过XML文件或者注解,轻松的对组件进行配置和管理,使得组件的切换、替换等操作更加的方便和快捷。
4. 交给Spring管理的对象(组件),方可享受Spring框架的其他功能(AOP,声明事务管理)等

3、Spring IOC容器的实现

SpringIoc容器接口

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

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

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

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

ApplicationContext容器实现类:

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

4、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和依赖关系的配置。

  • 12
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值