java后端框架之spring

spring 就是一个容器 储存在该容器中的东西(对象) 我们称之为"bean"

我们可以在Java中随便写一个类 通过bean.xml文件的配置,包括该类的路径以及 指明其id等

获取该对象(bean)的方法 就是创建一个容器 可以通过getBean的方法(不止这一种) 来获得bean

返回的默认是Object 但运行类型是该 类 可以Object向下转型

也可以getBean不需要转化类型 直接输入.class

结构刨析:

ioc容器中 有一个很重要的属性 就是beanfactory

其里面有保存该bean的信息,(存放在beanDefunitionMap中 ,是ConcurrentHashMap类型))

再具体来讲 beanDefunitionMap 下面还有一个table 是ConcurrentHashMap$Node类型

该table 初始化是一个512大小的 当超过时 会自动扩容

可以存放很多bean 的信息 (都是从bean.xml文件中来的)

其中 table中的每一个节点 里面的key是bean的id ,val中就是bean对象的信息包括 :类路径 是否是懒加载

beanDefunitionMap 保存bean的信息

以上保存的也只是bean的定义信息 必须有信息 才能创建对象

其具体的bean对象在 beanfactory 下面的singletonObjects中 类型也是ConcurrentHashMap

里面也有table 也是ConcurrentHashMap$Node类型

其中里面保存的是bean.xml文件中 配置的单例对象

singletonObjects保存的是对象

此外 还有一个属性 叫做beanDefinitionNames 里面定义了很多bean的 id 通过遍历可以快速看到ioc容器中注入哪些bean

容器启动时,Spring 会扫描 @Component@Service@Controller 等注解,或者解析 XML 配置,将这些 Bean 封装成 BeanDefinition 并注册到容器中。

相关推荐
zhanghaha13146 分钟前
Python进阶教程:27_subprocess 模块 零基础超详细教程
开发语言·python
兄弟加油,别颓废了。7 分钟前
bugku题目
开发语言·前端·python
hfywmsj10 分钟前
广州餐饮铺位招租的选址架构:流量入口与成本函数分析
java·大数据·jvm·广州餐饮铺位招租
zh_xuan11 分钟前
c++ string_view
开发语言·c++
爪哇岛国人12 分钟前
原来我一直理解错了:实现接口真的必须实现所有方法吗?
java
阿里嘎多学长14 分钟前
2026-09-05 GitHub 热点项目精选
开发语言·程序员·github·代码托管
古少侠17 分钟前
用 DS随心转 把 AI 画的 Mermaid 流程图转成 Word 里的高清图
开发语言·c#·word
万年咸鱼23 分钟前
Java BufferedOutputStream 详解:原理、用法与性能优化
java·开发语言·性能优化
万年咸鱼31 分钟前
Java BufferedInputStream 详解:原理、用法与实战
java·开发语言·python
weixin1997010801633 分钟前
[特殊字符]《二手ERP × 闲鱼消息驱动架构:正向+逆向交易消息如何驱动WMS出库与回传》(附Python源码)
开发语言·python·架构