Spring IOC详解:组件、容器、配置文件与依赖注入

前言:Spring IoC(控制反转)是Spring框架的核心管理容器,它负责管理应用中所有组件(对象)的生命周期和依赖关系。通过将需要实例化和管理的组件通过配置文件或注解标注,Spring容器自动完成对象的创建、组装和管理等各种工作

本文主要涉及到 组件,容器,配置文件,依赖注入等内容。

1.组件

平常我们实例化一个类,对象时,需要通过new方式去实例化,而实例化时,会自动触发这个类的构造函数,当程序结束或者该类没有用处时候,我们将手动或者程序自动结束该类的生命进程。

在Spring中,我们称这种具有创建、运行、销毁完整生命周期的对象为组件(也称Bean)。与传统方式不同的是,组件的生命周期由Spring容器全权管理:

  • 实例化:由容器根据配置创建对象实例

  • 组装:自动注入所依赖的其他组件

  • 管理:负责对象的生命周期,包括初始化和销毁

组件不仅仅是普通的Java对象,还是被Spring容器托管的对象,保证了组件之间的解耦和灵活协作。。

2.容器

在Java中,ArrayListSet等是用来存储对象的容器,它们负责对象的存储和访问。

比如Integer,String或者自定义的对象,类等等。

Spring里面呢有它 自己的容器,即Spring IOC容器,Spring IOC容器负责自动的去创建,保存,组装,管理组件对象。

Spring IoC容器是实现控制反转(IoC)和依赖注入(DI)的核心,容器通过读取配置元数据,动态地创建和装配组件对象。

Spring中最常用的容器接口有:

  • BeanFactory:最基础的容器接口,负责Bean的实例化和管理

  • ApplicationContext:是BeanFactory的子接口,功能更强大,支持国际化、事件发布等,适合企业级应用

3.配置文件

首先,我们刚刚提到了,Spring容器负责自动的去创建,保存,组装,管理组件对象。
怎么个创建方法?怎么个组装 管理方法?如果你不给任何提示,SpringIOC容器可以自动的,在你写完多个对象,多个类的时候直接的帮你进行各种实例化,各种考虑的东西吗?

显然是不可以的,这是时候我们需要对Spring IOC进行解释。写一种它能够读懂的方式。

Spring IOC怎么才能读懂,我们需要创建什么呢?
这时候就要有配置文件了。

配置文件总共有三种 XML类型文件的注释 JAVA配置类 注释 以及通过注解配置对每个组件里面的内容进行注释。

  • XML配置:通过XML文件定义Bean及其依赖关系,是Spring最早也是最传统的配置方式。

  • 注解配置:通过Java类上的注解(如@Component@Service@Autowired等)标注组件和依赖,容器通过扫描自动装配。

  • Java配置类:使用@Configuration@Bean注解的Java类来替代XML配置,增强类型安全和灵活性。

配置文件写完之后呢,机器就可以识别,同时将需要实例化的东西自动的去实例化。

也就是。

4.依赖注入

我们平常实例化对象是怎么实例化的?通过new方式

而Spring IOC容器主要通过构造函数注入,Setter方法注入两种方式进行实例化,具体选哪种呢?需要看你配置文件是怎么配置怎么注释的了,你怎么配置的,怎么注释的。SpringIOC容器就会怎么去做。

而你写完注入的配置文件了,去实例化了,这时候就要涉及依赖注入了。

当你配置文件是实例化对象A时,如果A依赖于对象B 对象C
那么这时候Spring容器将自动的去找到对象B与对象C,通过反射,去使用构造函数以及setter函数将这两个依赖注入进A

这就是依赖注入。

5.Spring IOC工作流程简述

  1. 编写配置元数据(XML、注解、Java配置类)

  2. 容器启动,加载配置

  3. 容器实例化Bean,通过反射调用构造函数或工厂方法创建组件实例

  4. 依赖注入,所有的组件实例化之后,我们再将所需依赖通过Setter或构造器注入组件中

  5. 组件初始化,调用初始化方法(注意顺序,是所有的组件进行实例化了,所有的组件进行依赖注入以后我们才对组件进行了初始化,也就是说,组件编写的先后顺序对组件的初始化是没关系的。比如组件A初始化时需要用到组件B。我们可以把组件A写在组件B的前面,这是没有关系的)

  6. 组件使用,应用程序通过容器获取组件实例,进行各种操作

  7. 容器关闭时销毁组件,调用销毁方法对组件进行销毁,关闭等操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值