当前位置: 首页 > article >正文

容器是怎么管理 Bean 的?

文章目录1. 核心蓝图BeanDefinition2. 核心管理流程生命周期流水线第一阶段准备与实例化第二阶段装配与填充第三阶段初始化Initialization第四阶段生存与销毁3. 核心机制三级缓存解决循环依赖4. BeanFactory vs ApplicationContext总结Spring 容器对 Bean 的管理不仅仅是“创建对象”那么简单它实际上是一套极其严密的生命周期流水线。容器通过BeanFactory生产工厂和BeanDefinition施工蓝图这两个核心组件完成了从读取配置到销毁对象的所有工作。1. 核心蓝图BeanDefinition在容器真正 new 一个对象之前它首先要把你的配置XML、注解、Starter转化成一个统一的内部结构BeanDefinition。这个蓝图记录了Bean 的全类名Class Name。作用域Scope单例还是多例。是否懒加载Lazy-init。依赖关系它需要注入哪些别的 Bean。初始化和销毁方法名。2. 核心管理流程生命周期流水线你可以把容器想象成一个自动化工厂每一个 Bean 都要走完以下流程第一阶段准备与实例化加载配置容器启动读取扫描路径下的所有类。注册 BeanDefinition将信息存入BeanDefinitionMap。实例化Instantiation通过反射机制调用构造函数创建一个“原生对象”。此时它只是个空的 Java 对象还没注入数据。第二阶段装配与填充属性赋值Populate容器根据蓝图把对应的配置参数和依赖的其他 Bean 注入进去比如Value、Autowired。Aware 回调如果 Bean 实现了BeanNameAware或ApplicationContextAware容器会把 Bean 的名字或容器引用塞给它。第三阶段初始化InitializationBeanPostProcessor 前置处理执行所有拦截器的postProcessBeforeInitialization方法。初始化方法先后执行PostConstruct、InitializingBean接口方法、以及自定义的init-method。BeanPostProcessor 后置处理执行postProcessAfterInitialization。注意AOP动态代理通常就在这一步发生。第四阶段生存与销毁就绪Bean 进入单例池Singleton Objects Map等待被业务代码调用。销毁Destruction当容器关闭时执行销毁逻辑PreDestroy等。3. 核心机制三级缓存解决循环依赖管理中最难的部分是如果 A 依赖 BB 也依赖 A 怎么办容器通过三级缓存本质是三个 Map来解决这个问题一级缓存singletonObjects存放完全初始化好的、可以直接用的“成品”Bean。二级缓存earlySingletonObjects存放已经实例化、但还没填充属性的“半成品”Bean。三级缓存singletonFactories存放创建 Bean 的工厂对象用来处理 AOP 情况下的循环依赖。逻辑A 创建时发现依赖 B先把自己这个“半成品”挂在缓存里跑去创建 BB 发现依赖 A直接从缓存里拿走 A 的“半成品”完成创建再回头把完整的 B 给 A。4. BeanFactory vs ApplicationContext容器的管理能力也分等级特性BeanFactoryApplicationContext定位底层接口提供基本容器功能。高级容器继承了前者。加载时机懒加载。只有获取 Bean 时才创建。预加载。容器启动时就创建所有单例。扩展功能无。支持 AOP、国际化、事件广播、资源访问。应用场景移动端或资源极度受限环境现已少用。几乎所有 Spring/Spring Boot 应用。总结容器管理 Bean 的本质是利用BeanDefinition统一标准利用“反射 缓存”实现自动化组装利用“生命周期接口”提供可扩展性。你现在已经看过了 Bean 的创建、销毁、以及容器的管理逻辑。你是否好奇过为什么 Spring 默认要把 Bean 设计成单例Singleton这种设计在处理高并发请求时会有什么潜在的“坑”

相关文章:

容器是怎么管理 Bean 的?

文章目录1. 核心蓝图:BeanDefinition2. 核心管理流程:生命周期流水线第一阶段:准备与实例化第二阶段:装配与填充第三阶段:初始化(Initialization)第四阶段:生存与销毁3. 核心机制&am…...

医学影像分割:2D超图像与3D网络性能对比与选型指南

1. 项目概述:从“切片”到“体素”的认知跃迁在医学影像分析领域,分割任务一直是核心中的核心。无论是肿瘤的勾画、器官的量化,还是病灶的追踪,精准的分割都是后续诊断、治疗规划和疗效评估的基石。长久以来,处理三维医…...

Bean 会被 JVM 回收吗?

文章目录核心结论:**会,但前提是它必须变得“不可达”。**1. Singleton Bean(单例):通常与容器同生死2. Prototype Bean(多例):管生不管死3. 决定 Bean 被回收的具体条件总结对照表核…...

Bean 什么时候会被销毁?

文章目录 1. 核心触发时机:容器关闭2. 不同作用域(Scope)的差异3. 销毁逻辑的具体执行顺序 Bean 的销毁时机主要取决于它的 作用域(Scope) 以及 容器(ApplicationContext)的状态。 在 Spring 中…...

航空发动机齿轮有限元可靠性分析与齿廓修形优化【附仿真】

✨ 本团队擅长数据搜集与处理、建模仿真、程序设计、仿真代码、EI、SCI写作与指导,毕业论文、期刊论文经验交流。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流,点击《获取方式》 (1)多保真度主动学习代理模型与模型修正: …...

CANN/hcomm通信域初始化

HcclCommInitRootInfo 【免费下载链接】hcomm HCOMM(Huawei Communication)是HCCL的通信基础库,提供通信域以及通信资源的管理能力。 项目地址: https://gitcode.com/cann/hcomm 产品支持情况 Ascend 950PR/Ascend 950DT:…...

OBS虚拟摄像头插件:4个虚拟摄像头同时工作的终极指南

OBS虚拟摄像头插件:4个虚拟摄像头同时工作的终极指南 【免费下载链接】obs-virtual-cam 项目地址: https://gitcode.com/gh_mirrors/obsv/obs-virtual-cam 还在为OBS直播画面只能分享到一个应用而烦恼吗?今天我要介绍的obs-virtual-cam插件&…...

ThinkPad风扇控制革命:如何用TPFanCtrl2告别过热与噪音困扰

ThinkPad风扇控制革命:如何用TPFanCtrl2告别过热与噪音困扰 【免费下载链接】TPFanCtrl2 ThinkPad Fan Control 2 (Dual Fan) for Windows 10 and 11 项目地址: https://gitcode.com/gh_mirrors/tp/TPFanCtrl2 在ThinkPad用户群体中,风扇控制一直…...

深度解析 MCP (Model Context Protocol):构建 AI Agent 的核心纽带

深度解析 MCP (Model Context Protocol):构建 AI Agent 的核心纽带 摘要 在当前大模型(LLM)向智能体(Agent)演进的过程中,如何打破“信息孤岛”,实现模型与外部工具、数据库及本地文件系统的标准…...

收藏必看!2026年AI内卷混战风口拆解,小白也能轻松入局大模型

2026年刷各大平台,相信不少程序员和零基础小伙伴都被AI圈内卷刷屏!既能自主决策、智能交互的人形机器人遍地开花,还有全网爆火、玩法持续迭代升级的AI小龙虾OpenClaw强势出圈。当下大模型技术更新迭代速度极快,用日新月异来形容行…...

收藏!2026年转AI大模型应用开发,正确学习顺序别踩坑(小白/程序员必看)

本文深度剖析2026年AI智能体公司的生存困境,点出其商业模式局限、缺乏行业深耕经验的核心痛点,揭示其难以持续盈利的底层逻辑。同时,结合当下AI大模型的爆发式发展趋势,强调大模型应用开发的学习价值,为小白、程序员整…...

【2026最新版|收藏备用】用Skill简化大模型知识库连接,小白程序员入门必看

本文专为2026年入门大模型的小白、程序员打造,详细介绍如何通过Skill技术简化大模型与外部知识库的对接流程,对比传统RAG方法的繁琐痛点,手把手讲解Markdown(.md)格式文档的存储技巧、SKILL.md文件的技能描述与导航方法…...

VMware Unlocker 3.0:专业解锁工具让PC轻松运行macOS虚拟机的高效指南

VMware Unlocker 3.0:专业解锁工具让PC轻松运行macOS虚拟机的高效指南 【免费下载链接】unlocker VMware Workstation macOS 项目地址: https://gitcode.com/gh_mirrors/unloc/unlocker 在Windows或Linux系统上运行macOS虚拟机,对于iOS应用开发者…...

GitHub中文界面终极指南:3步免费快速安装,告别英文困扰

GitHub中文界面终极指南:3步免费快速安装,告别英文困扰 【免费下载链接】github-chinese GitHub 汉化插件,GitHub 中文化界面。 (GitHub Translation To Chinese) 项目地址: https://gitcode.com/gh_mirrors/gi/github-chinese 还在为…...

基于Kubernetes的AI应用控制平面:kiro-acp架构解析与实践指南

1. 项目概述:一个面向AI应用开发的集成控制平面最近在GitHub上闲逛时,发现了一个名为kiro-acp的项目,隶属于haliphax-ai这个组织。光看名字,acp很容易让人联想到“应用控制平面”。点进去一看,果然,这是一个…...

微信小程序集成ChatGPT:架构设计与工程实践全解析

1. 项目概述:一个在微信小程序里跑起来的ChatGPT最近在捣鼓微信小程序,想看看能不能把ChatGPT这种大模型的能力塞进去。毕竟,现在AI对话这么火,如果能在小程序里直接调用,做个智能客服、个人助手或者创意工具&#xff…...

本地部署AI助手Catai:基于Llama.cpp的模型管理与服务集成指南

1. 项目概述:在本地运行你自己的AI助手 如果你和我一样,对大型语言模型(LLM)充满好奇,既想体验它们强大的对话和推理能力,又对数据隐私、网络依赖或API调用成本有所顾虑,那么本地部署一个AI模型…...

通用人工智能系统GPAIS:从专用AI到通用智能体的架构与实战

1. 项目概述:从“专用”到“通用”的AI范式跃迁最近几年,AI领域的热点几乎被大语言模型(LLM)和扩散模型(AIGC)所垄断。我们见证了它们在文本生成、代码编写、图像创作等特定任务上展现出的惊人能力。然而&a…...

2026 AI大会报名通道即将关闭:3大未公开优先注册通道+5类免审资格今日解锁

更多请点击: https://intelliparadigm.com 第一章:2026年AI技术大会报名截止时间 2026年AI技术大会(AI Tech Summit 2026)官方报名通道将于北京时间2026年3月15日23:59准时关闭,逾期系统将自动终止注册流程。本次大会…...

CANN/ops-math 3D反射填充算子

aclnnReflectionPad3d 【免费下载链接】ops-math 本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。 项目地址: https://gitcode.com/cann/ops-math 📄 查看源码 产品支持情况 产品是否支持Ascend 950PR/Ascend 950DT√Atlas …...

CANN/runtime CMO缓存操作

11-06 CMO 缓存操作 【免费下载链接】runtime 本项目提供CANN运行时组件和维测功能组件。 项目地址: https://gitcode.com/cann/runtime 本章节描述 CMO(Cache Maintenance Operations)缓存操作接口,用于缓存刷新与失效操作。 aclErr…...

Context Harness:本地优先AI知识库引擎,无缝集成Cursor与Claude

1. 项目概述:一个为AI工具打造的本地优先知识库引擎如果你和我一样,日常重度依赖像Cursor、Claude Code这类AI编程助手,那你肯定也遇到过这个痛点:当你想让AI帮你分析一个复杂的私有代码库、查阅公司内部的API文档,或者…...

构建安全多语言代码沙盒:从原理到实践

1. 项目概述:从“Can I Code?”到“Can I Code!”“let-sunny/canicode”这个项目名,初看有点意思。它不像一个传统的工具库或框架,名字里带着一个问句的意味——“我能编码吗?”。这恰恰是很多初学者,甚至是在特定领…...

AI赋能宠物纪念册:Gemini3.1Pro的情感文案术

在 2026 年,AI 的应用场景已经从“写文案、做海报、生成代码”扩展到更细分、更情绪化也更需要边界感的领域。比如宠物殡葬、生命纪念、情感告别、个性化内容定制等场景,过去往往依赖人工经验和手工整理,现在则可以借助 Gemini 3.1 Pro 先完成…...

深度解析next-routes:Next.js早期动态路由解决方案的设计与实现

1. 项目概述:一个被时代铭记的Next.js路由解决方案如果你在2017年到2020年间使用Next.js开发过项目,那么你大概率听说过甚至用过next-routes这个库。在那个Next.js官方路由系统还相对“简陋”的年代,next-routes凭借其Express风格的动态路由定…...

AMCT KV Cache量化配置

KV Cache量化简易配置文件 【免费下载链接】amct AMCT是CANN提供的昇腾AI处理器亲和的模型压缩工具仓。 项目地址: https://gitcode.com/cann/amct quant_calibration_config_pytorch.proto文件参数说明如下表所示,该文件所在目录为:AMCT安装目录…...

网络安全技术岗怎么选,不止渗透...

网络安全技术岗怎么选,不止渗透… 你真知道网络安全有哪些技术岗吗?不是所有人都去打漏洞,也不是所有人都进红队。 把网络安全行业里常见的技术岗岗位分类职责技术要求面试考点薪资段位都梳理清楚了👇 学习资源 如果你也是零基础…...

CANN/metadef自定义逻辑流分配函数

CustomAllocateStreamPassFn 【免费下载链接】metadef Ascend Metadata Definition 项目地址: https://gitcode.com/cann/metadef AI处理器支持情况 AI处理器类型 是否支持 Ascend 910C√ Ascend 910B√ 功能说明 注册自定义的逻辑流分配Pass执行函数。 函数原型 P…...

CANN/AMCT大模型FlatQuant量化

AMCT大模型对于LLAMA2/Qwen3的FlatQuant量化 【免费下载链接】amct AMCT是CANN提供的昇腾AI处理器亲和的模型压缩工具仓。 项目地址: https://gitcode.com/cann/amct 1 量化前提 1.1 安装依赖 本sample依赖包可参考requirements.txt 需要注意的是torch_npu包版本需要…...

基于Kuramoto模型与CNN的脑电信号同步特征提取与分类方法

1. 项目概述与核心思路最近在做一个挺有意思的交叉项目,核心是把物理学里的Kuramoto模型和深度学习里的卷积神经网络(CNN)结合起来,去处理脑电信号。听起来有点绕,但说白了,就是想用更“物理”一点的方式&a…...