- spring中Bean的实例化过程是(BeanDefintion)
- Bean的生命周期(如果没有这么复杂的生命周期的话,spring循环依赖不存在)
- Spring使用三个Map解决循环依赖
从spring framework 整个体系而言的话,spring的bean是由BeanDefinition来的,就是我们在Spring当中有个建模的一个类:BeanDefintion,Spring的Ban有一系列复杂的生命周期,…详细的一步步回答生命周期阶段…,(首先Spring容器启动,启动完了之后,会做一个简单的扫描,扫描完了之后把它变成一个BeanDefintion,然后把BeanDefintion保存到BeanDefintionMap中,然后遍历BeanDefintionMap,做一些验证,是否单例,是否原型,是否懒加载等,然后尝试获取这个类有没有已经在单例池中存在,有没有被提前暴露,如果没有提前暴露,spring就会去创建Bean,首先推断构造方法,得到一个最佳的构造方法用来实例化Bean,然后通过反射区实例化一个java对象,再去进行一些初始化工作,是否需要支持循环依赖,如果需要支持循环依赖,那么需要暴露一个ObjectFactory,保存到二级缓存中,然后进行属性注入;再往下执行会执行很多aware接口的回调,执行生命周期接口的回调,@PostConstruct等实现了initializerBean接口的;如果此时判断有AOP的话,会在这个时候生成代理;在往



