spring部分源码分析--------bean

bean实例化过程的大概流程

假设 有个x类 通过javac编译成一个class文件 然后 通过classloader加载到jvm虚拟机中
运行 main 方法的时候 会初始 spring环境和上下文 在上下文中 解析 主类
发现 这个类需要扫描 某些包下的所有类 比如说 扫描到x 扫描到之后 spring 不是立马把它new出来
它 扫描到之后 通过循环 用 BeanDefintion 的实现类 将bean的信息 注入并保存到全局变量map(beanDefinitionMap)中,
key为:“x” value为实现对象
这个 map 为spring的全局变量 保存 bean 信息 并通过map去new
如何 new?
会将这个map中的key-value拿出来 new出对象 放到 spring单例池 等待取用

假设 我们程序员 提供了一个类 实现了BeanFactoryPostProcessor接口 在new对象之前 就会去执行实现这个接口的类 将整个bean工厂(包含beanDefinitionMap)传入 可以修改map中的类型
即 将x变成y 通过 getBeanDefintion(“x”)取出该BeanDefintion对象

注:spring的命名规则 比如说 Xbbb类 实例化出的对象 为xbbb

BeanDefintion概念

在 spring 扫描到这些需要注入的类的时候 通过循环 通过 BeanDefintion(是个接口) 的实现类的对象 将名字 作用域 注入模型 懒加载等等 最主要的是 会保存类的类型 即 .setBeanClass(X.class) 把这些属性通过set方法保存到 BeanDefintion 对象中 存到map当中 key为:“x” value为实现对象
这个 map 为spring的全局变量 保存 bean 信息 并通过map去new

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值