type
status
date
slug
summary
tags
category
icon
password
😀
这里写文章的前言: 一个简单的开头,简述这篇文章讨论的问题、目标、人物、背景是什么?并简述你给出的答案。
可以说说你的故事:阻碍、努力、结果成果,意外与转折。
 

📝 方法

可以看到最后是走到了 doGetBean 这个方法里面来的. 这么看下来,doGetBean这个方法的代码还是蛮多的,其中有createBean()方法,这个方法从名字上看,就是创建bean的. 我们先看doGetBean这个方法
其实该方法从整体上来看,还是比较容易理解的(这里是先抛开了createBean这个方法)
先走 getSingleton方法,根据beanName来获取对象.如果获取出来的对象不为null的话,就会根据是否已经有正在创建了的还是没有,分别打印出来log出来,当然了这里的log级别是trace级别的. 最后走getObjectForBeanInstance方法,该方法不论是这里还是后面,都是有走到的
然后getSingleton方法获取出来的是null的情况下,会根据 单例 / 多例 / Scope去分别走不同的逻辑,看到if --> else if --> else 就是分别对应的这三种方式
最后还会检查一遍,判断requiredType不是null并且requiredType.isInstance(bean)返回的是false,也就是不相符的情况下,然后会T convertedBean = getTypeConverter().convertIfNecessary(bean, requiredType);去弄一个bean出来,如果弄出来的bean是null的话,就会抛出异常来,如果不是的话,就返回
如果最后的检查是不满足的检查的话,就会直接返回这个bean的
 

createBean方法

 

doCreateBean方法

该方法就是真正创建bean的方法
 

🤗 总结归纳

📎 参考文章

 
💡
有关文章的问题,欢迎您在底部评论区留言,一起交流~