Spring源码学习


1.BeanFactory和ApplicationContext是什么关系?

ApplicationContext:是IOC容器另一个重要接口, 它继承了BeanFactory的基本功能, 同时也继承了容器的高级功能,如:MessageSource(国际化资源接口)、ResourceLoader(资源加载接口)、ApplicationEventPublisher(应用事件发布接口)等。

2.spring中beanFactory

AbstractBeanFactory

DefaultSinglettonBeanRegistry

3.循环依赖问题(A依赖B,B依赖A)

三级缓存解决:singletonObjects、earlySingletonObjects、singletonFactories

流程:A实例化后放入singletonFactories中,初始化中发现需要加载B,此时去实例化B,初始化B的过程中发现依赖A,一次从singletonObjects、earlySingletonObjects、singletonFactories中获取A,在三次缓存中拿到A之后完成B的初始化,将B放入singletonObjects中,A拿到B的对象后进行自己的初始化。

如何避免循环依赖?

间接依赖,引入抽象类。

4.创建bean

如果不存在方法覆写,那就使用 java 反射进行实例化,否则使用 CGLIB,

方法覆写 对 lookup-method 和 replaced-method 的介绍

如果 bean 实现了 BeanNameAware、BeanClassLoaderAware 或 BeanFactoryAware 接口,回调BeanPostProcessor 的 postProcessBeforeInitialization 回调

处理 bean 中定义的 init-method,或者如果 bean 实现了 InitializingBean 接口,调用 afterPropertiesSet() 方法

BeanPostProcessor 的 postProcessAfterInitialization 回调

在某些特殊的情况下,Bean需要实现某个功能,但该功能必须借助于Spring容器才能实现,此时就必须让该Bean先获取Spring容器,然后借助于Spring容器实现该功能。为了让Bean获取它所在的Spring容器,可以让该Bean实现ApplicationContextAware接口。

5.spring包括那些组件

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值