SpringIOC 容器

SpringIOC 容器

一、组件的概念

什么是组件?

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

img

划分为组件后:

image1

组件就是所有可以重用的java对象,组件一定是对象,对象不一定是组件

 

二、Spring 进行组件管理

Spring框架替代了程序员原有的new对象和对象属性赋值的动作

  • 组件对象实例化

  • 组件属性赋值

  • 组件对象之间引用

  • 组件对象存活周期管理

我们只需要写配置文件,告诉Spring哪些组件需要它管理,以及他们之间的引用关系

优势:

  • 降低组件之间的耦合性,之前需要在类中去 new 另一个类,是强耦合,使用 SpringIOC 容器通过依赖注入机制,让这两个类的依赖关系减弱,降低耦合性

  • 提高代码可重用性和可维护性

  • 方便配置和管理

  • 交给Spring管理的对象,方可享受Spring框架的其他功能

 

三、SpringIOC 容器

普通容器:只能用来存储,没有其他功能。比如数组、集合等

复杂容器:不仅能存放,还能对内部的数据进行管理,程序中就像 Servlet容器就是复杂容器,创建对象,使用对象,销毁对象。

SpringIOC就是一个复杂容器,不仅可以存储组件,还从内部维护组件的生命周期,从创建到销毁的回调,还能在IOC容器内进行组件功能的扩展,加上事务等。

SpringIOC容器负责实例化、配置和组装bean,通过配置文件的形式获取这些指令。配置文件有三种形式:XML、Java注解、Java代码

SpringIOC容器具体接口和实现类

接口:

BeanFactory 只是规定了一些基本的方法:如何创建存储组件,如何对外 提供组件

ApplicationContext 是 BeanFactory 的子接口,它进行了一些扩展:

  • AOP

  • 消息资源处理(用于国际化)

  • web项目的支持

实现类:

ApplicationContext的实现类

  • ClassPathXmlApplicationContext

    • 配置文件是 xml 格式

    • 放在项目的类路径下(resource或src下)

  • FileSystemXmlApplicationContext

    • 配置文件是xml

    • 放在非项目路径下

  • WebApplicationContext

    • web项目对应的ioc容器

  • AnnotationConfigApplicationContext

    • 配置文件使用的是 java类

 

配置方式有三种:XML、注解、Java类

目前使用较多的是 java类 + 注解

 

控制反转(IOC)

当应用程序需要一个对象时,不再是应用程序直接创建对象,而是由IOC容器来创建和管理,控制权由应用程序转移到IOC容器中,也就是反转了 控制权

 

依赖注入(DI)

DI是指在组件之间传递依赖关系的过程中,将依赖关系在容器内部进行处理,这样就不必在应用程序中硬编码对象之间的依赖关系,实现了对象之间的解耦合。也就是之前 把一个对象赋值给另一个对象的操作在IOC容器中进行

 

IOC和DI 的实现步骤

  1. 写配置文件

  2. 实例化 IOC 容器

  3. 获取 Bean(组件)

posted @ 2024-07-15 20:03  GrowthRoad  阅读(1)  评论(0编辑  收藏  举报