0
点赞
收藏
分享

微信扫一扫

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


在application.properties中配置:

spring.main.lazy-initialization=true

在运行SpringApplication的run方法时,代码如下:

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


其中调用了prepareContext,prepareContext代码如下:

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


当在配置文件中配置了spring.main.lazy-initializatinotallow=true后,SpringApplication实例的this.lazyInitialization为true,就会向Spring容器注册一个类型为LazyInitializationBeanFactoryPostProcessor,这个BeanFactoryPostProcessor会在refresh方法中被调用,LazyInitializationBeanFactoryPostProcessor代码如下:

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


它会从容器中获取BeanDefinition,然后循环遍历,调用每个BeanDefinition的setLazyInit方法并传入ture. 这样在refresh方法中调用finishBeanFactoryInitialization创建所有单例对象时这些bean将不会被创建,从而完成了全局懒加载


举报

相关推荐

0 条评论