spring知识点复习--针对面试的
前言
此内容是笔者通过B站的视频总结而来。原视频链接地址:6、Bean Factory与FactoryBean有什么区别_哔哩哔哩_bilibili
1.谈谈springIOC的理解,原理与实现
回答涉及到的点:
控制反转:是一种理论思想,原来的对象是由使用者来进行控制的,有了spring之后,可以把整个对象交给spring来帮助我们进行管理的。
DI:依赖注入,把对应的属性值注入到具体的对象中,在spring的应用:@Autowired,populateBean完成属性值的注入。
源码非常熟悉的时候的回答要涉及的点:
容器:具体存放对象,使用map结构来进行存储的,在spring中一般存在三级缓存,singletonObject存放完成的bean对象,我们一般取对象都会从singletonObject中进行获取。整个bean的生命周期,从创建到销毁的过程,都是由容器来进行管理的,这里可以引出一个bean的生命周期。
1.容器的创建过程,(容器最上层是一个根接口BeanFactory,实际我们用的最多的就是DefaultListableBeanFactory )向beanFactory中进行设置一些参数(BeanPostProcessor,Aware接口的子类)等等属性。
2.加载解析bean对象,准备创建bean对象的定义对象beanDefintion(xml或者注解的解析过程)
3.beanFactoryPostProcessor的处理,这里spring 提供了很多得扩展点,例如,处理占位符得PlaceHolderConfigurationSupport,ConfigurationClassPostProcessor
4,beanFactoryPostProcessor的的注册功能,方便后续对bean对象进行完成的具体的扩展功能
5.通过反射的方式将BeanDefinition对象实例化成具体的bean对象
6.bean对象的初始化过程(填充属性,调用aw