【Spring IOC容器加载过程】

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

Spring IOC容器加载分为以下几个步骤:

  1. 定位配置文件:首先需要定位Spring配置文件,Spring提供了多种方式,如通过ClassPath、FileSystem等方式进行定位。
  2. 加载配置文件:在定位到配置文件后,通过BeanDefinitionReader读取配置文件,并将Bean定义信息加载到BeanDefinitionRegistry中。
  3. 实例化BeanFactory:将Bean定义信息转化为Bean实例,此时容器中还没有Bean实例化,只是将Bean定义信息注册到BeanFactory中。
  4. 预处理BeanDefinition:在实例化BeanFactory之后,需要对BeanDefinition进行一些预处理,如解析Bean的依赖关系、初始化占位符等。
  5. 注册BeanPostProcessor:Spring IOC容器提供了BeanPostProcessor接口,允许在Bean实例化前后进行一些自定义处理,需要将所有实现了BeanPostProcessor接口的类注册到容器中
  6. 实例化非懒加载的单例Bean:在容器实例化后,容器会立即实例化所有非懒加载的单例Bean,这些Bean会在容器启动时创建,放入单例Bean缓存池中。
  7. 注册监听器:在Bean实例化之前,我们可以通过Spring提供的事件机制注册监听器,监听Bean实例化、销毁等事件。
  8. 初始化剩余的Bean:容器实例化后,会等待请求来初始化剩余的Bean,需要注意的是,懒加载的Bean只有在第一次使用时才会初始化。
  9. 容器启动完成:在容器完成以上步骤后,Spring IOC容器就启动成功了,可以通过getBean()方法获取之前注册的Bean实例。


相关文章
|
2天前
|
设计模式 XML Java
【23种设计模式·全精解析 | 自定义Spring框架篇】Spring核心源码分析+自定义Spring的IOC功能,依赖注入功能
本文详细介绍了Spring框架的核心功能,并通过手写自定义Spring框架的方式,深入理解了Spring的IOC(控制反转)和DI(依赖注入)功能,并且学会实际运用设计模式到真实开发中。
【23种设计模式·全精解析 | 自定义Spring框架篇】Spring核心源码分析+自定义Spring的IOC功能,依赖注入功能
|
6天前
|
XML Java 数据格式
Spring容器Bean之XML配置方式
通过对以上内容的掌握,开发人员可以灵活地使用Spring的XML配置方式来管理应用程序的Bean,提高代码的模块化和可维护性。
33 6
|
22天前
|
存储 缓存 Java
Spring面试必问:手写Spring IoC 循环依赖底层源码剖析
在Spring框架中,IoC(Inversion of Control,控制反转)是一个核心概念,它允许容器管理对象的生命周期和依赖关系。然而,在实际应用中,我们可能会遇到对象间的循环依赖问题。本文将深入探讨Spring如何解决IoC中的循环依赖问题,并通过手写源码的方式,让你对其底层原理有一个全新的认识。
41 2
|
22天前
|
安全 Java 开发者
Spring容器中的bean是线程安全的吗?
Spring容器中的bean默认为单例模式,多线程环境下若操作共享成员变量,易引发线程安全问题。Spring未对单例bean做线程安全处理,需开发者自行解决。通常,Spring bean(如Controller、Service、Dao)无状态变化,故多为线程安全。若涉及线程安全问题,可通过编码或设置bean作用域为prototype解决。
32 1
|
1天前
|
存储 Java 应用服务中间件
【Spring】IoC和DI,控制反转,Bean对象的获取方式
IoC,DI,控制反转容器,Bean的基本常识,类注解@Controller,获取Bean对象的常用三种方式
|
1月前
|
监控 IDE Java
如何在无需重新启动服务器的情况下在 Spring Boot 上重新加载我的更改?
如何在无需重新启动服务器的情况下在 Spring Boot 上重新加载我的更改?
54 8
|
1月前
|
前端开发 Java Docker
使用Docker容器化部署Spring Boot应用程序
使用Docker容器化部署Spring Boot应用程序
|
1月前
|
Java Docker 微服务
利用Docker容器化部署Spring Boot应用
利用Docker容器化部署Spring Boot应用
51 0
|
17天前
|
监控 NoSQL 时序数据库
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
156 77
|
25天前
|
监控 Docker 容器
在Docker容器中运行打包好的应用程序
在Docker容器中运行打包好的应用程序

热门文章

最新文章