Spring bean创建过程中的几个factory
在SpringBoot启动过程中会去创建很多bean,然后交给IoC容器,创建的过程中涉及到几个比较容易混淆的factory如下
BeanFactory,FactoryBean,ObjectFactory
BeanFactory
是一个接口,是一个bean的工厂,能够创建bean(按照bean的生命周期来创建Spring中大部分的bean实例),并提供了获取bean实例的方法
FactoryBean
是一个接口,通过实现这个接口,能够自定义创建bean实例,不必按照bean的生命周期来创建bean
ObjectFactory
是一个函数式接口,用于Spring三级缓存,bean实例化以后就会加入三级缓存,三级缓存是以bean name未key, 函数式接口为value,在bean完成实例化(还未进行属性赋值)后就加入到三级缓存中,进行提前曝光,方便解决单例模式的循环依赖,在循环依赖中会去获取三级缓存中的value,得到实例化的bean或者bean的代理。