真正实现向IOC容器获取bean的功能,也是出发依赖注入的地方
如上图所示:先从缓存中去读是否应已经有被创建过的单例模式bean,对于单例模式bean,整个IOC容器只创建一次,不要重复创建。如果IOC容器里面没有单例模式的bean,则创建好后,放到IOC容器里面,在org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#doCreateBean
如果对于多实例bean,则每次都是创建新的bean
总结:@Lazy的作用
SpringIoC容器会在启动的时候实例化所有单实例 bean 。如果我们想要实现 Spring 在启动的时候延迟加载 bean,即在首次调用bean的时候再去执行初始化,就可以使用 @Lazy 注解来解决这个问题。注意:使用@Lazy的前提是要操作的Bean要使用默认的单例模式。使用@Lazy懒加载注解可以减少springIOC容器启动过程的加载时间。而当使用改注解时,改单例对象在第一次被调用的时候创建,放到IOC容器里,并且只创建一次,第二次以后就会在IOC容器里面获取便可以了。