Spring

1.谈谈你对SpringIOC的理解,原理与实现
总:控制反转,容器

控制反转:原来的对象由使用者控制,现在有了Spring后,可以把整个对象交由Spring管理DI:把对应的属性值注入到具体的对象当中,可通过@Autoiware和populater完成属性的注入容器:存放具体对象,使用map结构,在Spring中一般存在三级缓存中,singletonObject存放完整对象。在整个bean的生命周期从c创建到销毁的过程全部是由容器管理。

容器的创建过程:

1.通过BeanFacory,DefaultListableBeanFactory向Bean工厂中设置一下参数(beanPost Processer,aware接口的子类)等属性
2.加载解析Bean对象,准备要创建的bean对象的定义对Beandefinition(xml或注解)
3.beanFactoryPostProcess的处理,此处是扩展点
4.beanPostProcess注册,方便后续bean对象完成具体的扩展功能
5.通过反射将BeanDefinition对象实例化成具体的对象
6.bean对象的初始化过程(填充属性,调用aware子类方法,对用beanPostProcess前置方法,调用initial-method,调用beanPostProcess后置方法)
7.生成完成的Bean对象,通过getBean方法可以直接获取
8.销毁

没有看过源码

具体的细节我不太记得了,但spring中的bean都是通过反射的方式进行创建的,通知包含了很多的扩展点,比如最常用的对BeanFactaory的扩展,对Bean的扩展(对占位符的扩展),除此之外IOC最核心的就是填充Bean的具体属性和生命周期

2.谈一下IOC的底层实现

你对它的理解和你了解的实现过程
反射、工厂、设计模式关键的方法:creatBeanFactory,getBean,doGetBean,createBean,doCreateBean,create Bean Instance,populateBean,initalizingBean
1.先通过creatBeanFactory创建一个bean工程(DefaultlisableBeanFactory)
2.循环创建对象,因为容器中的bean都是单例的,所以优先通过getbean和doGetbean在容器中进行查找,找不到的话
3.通过creatBean和doCreateBean以反射的方式创建对象,一般通过无参的构造方法
4.对对象属性的填充populateBean
5.进行其他的初始化操作(initalizingBean)

3.描述一下Bean的生命周期
spring bean的生命周期
4.Spring是如何解决循环依赖的问题?
5.BeanFactory与Factory Bean的区别
6.Spring中用到的设计模式
7.SpringAOP的底层实现原理
8.Spring的事务管理是如何实现的
9.谈一下食物的传播
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值