Bean的生产
class到beanDefinition
beanDefinition到Bean
Bean查找流程
- 根据类型找
- 找到多个根据名称找
AOP
在实例化后创建代理对象返回
把之前创建的Bean塞入代理对象的 target 字段中
事务
利用AOP代理掉数据源
在提交事务的时候
- 关闭自动提交
- 手动提交事务
- 异常回滚事务
简要流程-扫描
- 解析配置文件
- 得到扫描路径
- 遍历路径下的文件 编译后的 class
- 解析注解获取 beanDefinition
到这里为止所有的 class文件都被扫描过了
为了不再重复扫描这里就把class转化为 beanDefinition
在合适的时机去转化为bean
注意还有一个问题 就是beanName相同的时候
其实在扫描的时候就能判断处理
简要流程-实例化
- 在beanDefinition中已经存储了是否是单例还是多例
- 判断如果是单例则从单例持中获取
- 如果是多例则每一次都创建
单例且不是懒加载的类在容器创建的是否会一起创建
简要流程-依赖注入
- 获取所有的属性
- 遍历 是否存在 注入注解
- 去bean工厂获取bean 也就是调用 getBean
简要流程-初始化
判断是否是否个类的子类
是的话直接强转后调用方法即可
简要流程-初始化前后
判断一个类是否实现了某个接口(PostProcess)
这里区别与实例 所以不能用 instance
如果是则缓存
因为后置处理器的可以返回一个对象
所以就可以利用这里来实现AOP