spring学习

  1. IOC的理解(what why how)?Spring如何解决循环依赖问题?

what

​ 控制反转,依赖注入。

​ 在Ioc场景中,所有的被注入对象和依赖对象由IoC Service Provider统一管理。IoC Service Probider会把相应的被依赖对象注入到被注入对象中。

why

每次使用依赖对象不需要主动获取,更加轻松简洁。

how

@Resource和@Autowired都是做bean的注入时使用。工厂模式加反射

Spring如何解决循环依赖问题:

第一级缓存〈也叫单例池)singletonObjects:存放已经经历了完整生命周期的Bean对象

第二级缓存: earlySingletonObjects,存放早期暴露出来的Bean对象,Bean的生命周期未结束(属性还未填充完整)

第三级缓存: Map<String, ObiectFactory<?>> singletonFactories,存放可以生成Bean的工厂

A创建过程中需要B,于是A将自己放到三级缓存里面,去实例化B,B实例化的时候发现需要A,于是B先查一级缓存,没有,再查二级缓存,还是没有,再查三级缓存,找到了A然后把三级缓存里面的这个A放到二级缓存里面,并删除三级缓存里面的AB顺利初始化完毕,将自己放到一级缓存里面(此时B里面的A依然是创建中状态)然后回来接着创建A,此时B已经创建结束,直接从一级缓存里面拿到B,然后完成创建,并将A放到一级缓存中。

  1. AOP的理解(what why how)?

what

通过横向抽取机制为无法通过纵向继承体系进行抽象的重复性代码提供了解决方案。

why

难以消除重复性横切代码。

how

Spring AOP底层通过JDK或CGLib动态代理技术为目标Bean织入横切逻辑。

jdk动态代理

​ Proxy和InvocationHandler

cglib的动态代理

​ intercept(Object obj,Method method,Object[] args,MethodProxy proxy)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值