java面试八股文

spring ioc的理解,原理及实现

  1. 控制反转:对象由spring来控制,例如 DI : 依赖注入,常见 @Autowired
  2. 容器: 使用map结构来存储,spring一般存在三级缓存。bean的生命周期,从创建到使用,到销毁,全部由容器来管理
  3. bean的生命周期:bean 的生成主要使用到工厂模式加反射。创建benafactory ,读取bena配置到beanDefinition,(xml的读取,注解的检测),bean工厂的扩展,bean属性的丰富,生成bean ,销毁bean。

spring 三级缓存是哪三级

  1. singletonObjects,核心的单例bean缓存
  2. earlySingletonObjects, 提前暴露的单例对象,如@PostConstruct注解的方法或实现了InitializingBean接口的afterPropertiesSet方法
  3. singletonFactories 用于存储beanfactory,如果有其他Bean依赖于当前正在创建的Bean,而当前Bean还没有完全初始化,那么可以通过这个缓存中的ObjectFactory来创建一个代理对象,以满足依赖关系,从而避免循环依赖问题。

spring 是如何解决循环依赖

三级缓存, 提前暴露, aop

  1. 互相依赖,构成循环依赖
  2. 实例化和初始化分开操作(提前暴露对象的引用),不同状态的对象放在不同级别的缓存中,一级缓存放的是完整的对象,二级缓存放的是实例化但未初始化完成的的对象,三级缓存是一个函数式接口,创建代理对象
  3. bean的创建优先放在三级缓存中,需要代理(aop)返回代理对象,否则返回普通对象
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值