首页 > 其他分享 >Spring IOC容器初始化:一场关于Bean生命周期的探险

Spring IOC容器初始化:一场关于Bean生命周期的探险

时间:2024-12-31 19:56:34浏览次数:3  
标签:容器 仓库 Spring Bean IOC BeanDefinition

想象一下,Spring IOC容器就像一个大型的仓库,它的任务是存储和管理各种物品(在这里,物品就是Bean)。但是,在仓库开始工作之前,它需要先进行一系列的准备工作,这就是IOC容器的初始化过程。

这个过程可以分为三个主要步骤:

1. Resource定位:

    • 这一步就像是仓库管理员先要去找到存放物品的清单或地图。在Spring中,这个“清单或地图”就是BeanDefinition,它描述了Bean的各种信息

    • Resource定位就是由ResourceLoader通过统一的Resource接口来完成,找到这些BeanDefinition资源的位置。这些BeanDefinition可以存在于文件系统中、类路径中,或者其他形式。

2. BeanDefinition载入:

    • 找到了物品清单后,仓库管理员就要把清单上的物品信息录入到仓库的管理系统中。在Spring中,这一步就是把BeanDefinition载入到IOC容器内部

    • 载入过程实际上是把用户定义好的Bean表示为容器内部的数据结构,这个数据结构就是BeanDefinition。它就像是POJO对象(普通的Java对象)在IOC容器中的“身份证”,记录了Bean的各种属性和行为。

3. BeanDefinition注册:

    • 最后一步,仓库管理员要把录入的信息保存到仓库的数据库中,以便以后可以随时查询和管理。在Spring中,这一步就是把BeanDefinition注册到IOC容器中。

    • 注册过程是通过BeanDefinitionRegistry接口来完成的,它实际上是把BeanDefinition保存到一个HashMap中。这样,IOC容器就可以通过这个HashMap来持有和管理所有的BeanDefinition数据了。

完成了这三个步骤后,Spring IOC容器就初始化完成了,它就可以开始存储和管理各种Bean了。

值得注意的是,IOC容器的初始化过程并不包含Bean的依赖注入。依赖注入是发生在应用第一次通过getBean方法向容器索取Bean的时候,或者在某些特殊情况下(如设置了lazy-init属性),Bean的依赖注入可能会在IOC容器初始化时就预先完成。

标签:容器,仓库,Spring,Bean,IOC,BeanDefinition
From: https://blog.csdn.net/qq_44378083/article/details/144751813

相关文章

  • 基于springcloud分布式的网上商城系统设计与实现【源码+文档+部署讲解】
    系统介绍基于springcloud分布式实现的网上商城系统采用前后端分离的架构方式,系统分为管理员、用户两种角色,实现了用户管理、商品管理、商品分类管理、轮播图管理、咨询管理、订单管理等模块,前台实现了用户登录、用户下单、个人中心、商品评价的功能。技术选型开发工具:idea20......
  • 如何理解springboot中的bean?
    让我从多个角度来解释SpringBoot中的Bean概念:###1.什么是BeanBean是由Spring容器管理的对象,简单来说就是:-一个Java对象(实例)-被Spring容器创建、管理和销毁-可以被其他组件使用(依赖注入)###2.Bean的定义方式1.**注解方式**:```java@Component//......
  • @SpringBootApplication之scanBasePackages
    @SpringBootApplication(scanBasePackages={"${yudao.info.base-package}.server","${yudao.info.base-package}.module"})这句话什么意思?让我解释一下这个注解的含义:`@SpringBootApplication(scanBasePackages={...})`是SpringBoot的核心注解,它有以下几个要点:1.......
  • JAVA开源毕业设计 大学生竞赛管理系统 Vue.JS+SpringBoot+MySQL
    本文项目编号T101,文末自助获取源码\color{red}{T101,文末自助获取源码}......
  • JAVA开源毕业设计 租房管理系统 Vue.JS+SpringBoot+MySQL
    本文项目编号T102,文末自助获取源码\color{red}{T102,文末自助获取源码}......
  • 【9610】基于springboot+vue的闲一品交易平台-lw
    主营内容:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。收藏点赞不迷路,关注作者有好处技术选型开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat9数据库:mysql5.7(一定要5.7+版本)数据库工具:Navicat11......
  • springboot~多节点应用里的雪花算法唯一性
    雪花算法的唯一性,在单个节点中是可以保证的,对应kubernetes中的应用,如果是横向扩展后,进行多副本的情况下,可能出现重复的ID,这需要我们按着pod_name进行一个workId的生成,我还是建议通过不引入第三方组件和网络请求的前提下解决这个问题,所以我修改了kubernetes的yaml文件。k8s的......
  • 【JAVA高级篇教学】第六篇:Springboot实现WebSocket
    在SpringBoot中对接WebSocket是一个常见的场景,通常用于实现实时通信。以下是一个完整的WebSocket集成步骤,包括服务端和客户端的实现。本期做个简单的测试用例。目录一、WebSocket简介 1.什么是WebSocket?2.WebSocket的特点3.WebSocket的工作原理二、添......
  • 【SpringCloud】7.Spring Cloud Alibaba 初步了解
    前面,我们学习了SpringCloud微服务解决方案:服务注册与发现、分布式配置管理:Consul服务调用和负载均衡:LoadBalancer、OpenFeign服务熔断与降级:Resilience4J分布式链路追踪:Micrometer服务网关:gateway总的来说,微服务的学习已经打通。不过,我们还需要学习SpringCloudAliba......
  • Springboot流浪动物管理系统p2326(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表用户,宠物分类,宠物信息,领养信息,宠物救助,宠物助养,助养捐款,助养明细,关于我们,成员申请开题报告内容一、开题依据1.研究目的及意义随着城市化进程的推进,......