SpringBoot复习:(46)全局的bean懒加载是怎么实现的?

在application.properties中配置:

spring.main.lazy-initialization=true

在运行SpringApplication的run方法时,代码如下:
SpringBoot复习:(46)全局的bean懒加载是怎么实现的?_第1张图片
其中调用了prepareContext,prepareContext代码如下:
SpringBoot复习:(46)全局的bean懒加载是怎么实现的?_第2张图片
当在配置文件中配置了spring.main.lazy-initialization=true后,SpringApplication实例的this.lazyInitialization为true,就会向Spring容器注册一个类型为LazyInitializationBeanFactoryPostProcessor,这个BeanFactoryPostProcessor会在refresh方法中被调用,LazyInitializationBeanFactoryPostProcessor代码如下:
SpringBoot复习:(46)全局的bean懒加载是怎么实现的?_第3张图片
它会从容器中获取BeanDefinition,然后循环遍历,调用每个BeanDefinition的setLazyInit方法并传入ture. 这样在refresh方法中调用finishBeanFactoryInitialization创建所有单例对象时这些bean将不会被创建,从而完成了全局懒加载

你可能感兴趣的:(SpringBoot,spring,boot,后端,java)