【Spring IoC容器的加载过程】

简介: 【Spring IoC容器的加载过程】


  1. 加载配置文件

Spring IoC容器的配置通常以XML形式存储,并通过ResourceLoader和XmlBeanDefinitionReader类来加载。ResourceLoader主要负责加载Bean配置文件,而XmlBeanDefinitionReader则负责解析这些文件,将Bean定义封装为BeanDefinition对象。

  1. 解析和注册BeanDefinition

在加载配置文件后,XmlBeanDefinitionReader会使用BeanDefinitionParserDelegate类来解析文件中的Bean定义,并将其封装为BeanDefinition对象。这些对象会被注册到BeanDefinitionRegistry中,BeanDefinitionRegistry是一个接口,提供了向IoC容器中注册BeanDefinition的方法。

  1. 初始化BeanDefinition

在加载和解析BeanDefinition后,XmlBeanDefinitionReader会调用BeanDefinition的postProcessBeanDefinition方法,对BeanDefinition进行进一步处理。这个方法主要用于处理继承关系、AOP、注解等。例如,在处理注解时,会通过AnnotationConfigUtils类加载配置类,并向容器中注册BeanDefinition,解析其中的注解配置信息。

  1. 加载Bean

Spring IoC容器中的Bean是延迟加载的,只有在需要使用时才会被实例化。这个过程是通过Bean的getBean方法实现的。getBean方法根据Bean的名称或类型查找BeanDefinition,然后通过Bean工厂创建Bean实例。Bean工厂主要有两种:DefaultListableBeanFactory和XmlWebApplicationContext。在创建Bean实例时,DefaultListableBeanFactory会根据Bean的作用域创建对应数量的实例。Bean的作用域通常有singleton、prototype、request、session和global session等。

  1. 填充Bean属性

创建Bean实例后,Spring IoC容器会通过BeanPostProcessor接口中的postProcessPropertyValues方法来对Bean的属性进行填充。这个过程是通过PropertyValues封装Bean的属性,然后使用依赖注入技术自动填充。

  1. 初始化Bean

填充完Bean的属性后,Spring IoC容器会使用BeanPostProcessor中的postProcessBeforeInitialization方法对Bean进行预处理。然后再使用InitializingBean接口中的afterPropertiesSet方法或者配置文件中指定的init-method方法来初始化Bean。

  1. 销毁Bean

销毁Bean是Spring IoC容器的最后一个步骤,在销毁时使用DisposableBean接口中的destroy方法或者配置文件中指定的destroy-method方法来进行。


相关文章
|
4天前
|
Java 测试技术 开发者
IoC容器有什么作用?
【4月更文挑战第30天】IoC容器有什么作用?
35 0
|
4天前
|
XML Java 数据格式
Spring框架入门:IoC与DI
【5月更文挑战第15天】本文介绍了Spring框架的核心特性——IoC(控制反转)和DI(依赖注入)。IoC通过将对象的创建和依赖关系管理交给容器,实现解耦。DI作为IoC的实现方式,允许外部注入依赖对象。文章讨论了过度依赖容器、配置复杂度等常见问题,并提出通过合理划分配置、使用注解简化管理等解决策略。同时,提醒开发者注意过度依赖注入和循环依赖,建议适度使用构造器注入和避免循环引用。通过代码示例展示了注解实现DI和配置类的使用。掌握IoC和DI能提升应用的灵活性和可维护性,实践中的反思和优化至关重要。
18 4
|
4天前
|
Java 测试技术 开发者
Spring IoC容器通过依赖注入机制实现控制反转
【4月更文挑战第30天】Spring IoC容器通过依赖注入机制实现控制反转
22 0
|
4天前
|
XML Java 程序员
Spring特性之二——IOC控制反转
Spring特性之二——IOC控制反转
16 4
|
4天前
|
安全 Java 开发者
在Spring框架中,IoC和AOP是如何实现的?
【4月更文挑战第30天】在Spring框架中,IoC和AOP是如何实现的?
24 0
|
4天前
|
Java 开发者 容器
IoC容器如何实现依赖注入?
【4月更文挑战第30天】IoC容器如何实现依赖注入?
21 0
|
4天前
|
XML Java 数据格式
如何配置IoC容器?
【4月更文挑战第30天】如何配置IoC容器?
20 0
|
4天前
|
Java 应用服务中间件 Maven
SpringBoot 项目瘦身指南
SpringBoot 项目瘦身指南
60 0
|
4天前
|
缓存 安全 Java
Spring Boot 面试题及答案整理,最新面试题
Spring Boot 面试题及答案整理,最新面试题
142 0
|
4天前
|
存储 JSON Java
SpringBoot集成AOP实现每个接口请求参数和返回参数并记录每个接口请求时间
SpringBoot集成AOP实现每个接口请求参数和返回参数并记录每个接口请求时间
49 2

热门文章

最新文章