《spring源码深度解析》读书笔记_初读①

一、Spring模块总结

⑴ Core Cotainer :包含 Core,Beanx,Context,和expression Language模块。
Beans和Core模块是框架的基础部分,提供IOC 。主要概念是BeanFactory,它提供的经典实现来消除程序性单例模式的需要,并真正的允许从程序逻辑中分离出依赖关系和配置。
⑵ Data Access/Integration :JDBC,ORM,OXM,JMS和Transaction
⑶ Web :web,web-struts,web-servlet,web-porlet
⑷AOP 定义方法的拦截器和切点。面向切面编程,提供事务管理服务。
⑸Test

二、bean的加载过程

⑴ 转换对应beanName
对传入的参数解析——
1. 去除FactoryBean的修饰符,也就是如果name=&aa, 解析后 为:name=aa
2. 取指定alias所表示的最终beanName,例如:若别名A指向别名B,别名B指向名称为C的bean则返回C;
⑵尝试从缓存中加载单例
单例在Spring的同一个容器内只会被创建一次,后续再获取bean,就直接从单例缓存中获取。如果缓存中没有,则尝试从singletonFactories中加载。
因为Spring创建bean的原则是不等bean创建完成就会创建bean的ObjectFactory,提早曝光加入到缓存中,一旦下一个bean创建时就需要依赖上一个bean,则直接ObjectFactory
为何为尝试加载,因为可能会存在循环依赖
⑶bean的实例化
从缓存中得到的只是bean原始状态,真正需要的是工厂bean中定义的factory-method方法中返回的bean,而getObjectForBeanInstance就是完成这个工作的。
比如在面加工厂,因为面有各种各样的,我不可能吧全部的面食都做好等着客人来买,因为面会变质的。所以面加工厂的初始面还是面粉,想要薯粉面的 ,就拿面粉跟其他原料加工后再卖出。
⑷ 原型模式的依赖查询
只有在单例模式下才会尝试解决循环依赖。
⑸ 检测parentBeanFactory
⑹将存储XML配置文件的GernericBeanDefinition转换为RootBeanDefintion
⑺ 寻找依赖
⑻针对不同的scope进行bean的创建
⑼类型转换
将返回的bean转换为requiredType所指定的类型

三、FactoryBean一些用法

getObject() 由F acoryBean创建的bean
isSingleton()
getObjectType()

四、getoObjectFromFactoryBean的工作

⑴ 对FactoryBean正确性的验证
⑵ 对非FactoryBean不做任何处理
⑶ 对bean进行转换
⑷ 将从Factory中解析bean的工作 委托给getoObjectFromFactoryBean

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值