调用finishbeanfactoryinitialzation完成bean最后的创建点进此方法 发现最终会执行下面这个方法
就是初始化最后的单实例bean
继续跟进 可以看到
先得到 所有beandefinitions 然后再开始创建对象如果是factorybean 就调用 getobject 创建 bean不是则 调用下面的方法进行创建bean
调用dogetbean创建
先获取缓存中的单实例bean ,如果能
发现getsingle是从 concurrenthashmap中获取如果已经被创建则不在创建,如果没有则开始创建
如果缓存中拿不到则 先得到bean工厂开始创建bean标记当前bean已经被创建 线程安全,保证单例
获取bean的定义信息。 先创建和当前bean有依赖的bean利用getbean创建和上面步骤一样创建bean
然后判断该bean是单实例还是多实例进行创建在单例进行创建时,还要进行对方法进行拦截 做一些对bean创建前后的事情,比如说代理,通过postprocessor