为什么我们要去考虑Bean有可能已经被创建了?

来源:8-3 夺取doGetBean之剩余逻辑的扫荡

风云独舞九天

2020-03-30

老师您好,为什么spring源码要考虑bean已经被创建了?我们的容器不是由我们来启动吗?并且只启动一次呀,为什么还会出现已经创建的情况?在容器运行过程当中还会加入其它的bean吗?

写回答

1回答

翔仔

2020-03-31

同学好,因为容器均是通过getBean方法从容器获取bean实例的,而有的bean在容器初始化的时候就会被创建,有的是延迟加载的。比如说,我们某个Service类在容器初始化的时候就已经被容器通过getBean方法提前创建出来了。而在我们的某个Controller类下面如果拥有该Service类作为成员变量,并标记上@Autowired标签,并且该controller类咱们将其设置成延迟加载的。此时该Controller类只有在首次被调用的时候才会创建出对应的Bean实例来,而创建的过程中,就会调用getBean去获取这个Service的Bean,此时Service的Bean由于已经创建好,就可以直接从容器的缓存里返回

0
1
风云独舞九天
非常感谢!老师我懂啦!
2020-04-02
共1条回复

剑指Java自研框架,决胜Spring源码

快速入门Spring核心源码+从零开发自研框架

1499 学习 · 495 问题

查看课程