会调用AbstractApplicationContext#getBean(java.lang.Class
先获取DefaultListableBeanFactory,然后再调用这个BeanFactory的getBean方法,然后调用
DefaultListableBeanFactory#getBeanNamesForType(org.springframework.core.ResolvableType)
调用DefaultListableBeanFactory#doGetBeanNamesForType方法,调用
AbstractBeanFactory#isTypeMatch(java.lang.String, org.springframework.core.ResolvableType)
调用了
DefaultSingletonBeanRegistry#getSingleton(java.lang.String, boolean)获取beanInstance的Object对象
然后封装成NamedBeanHolder对象,然后在给NamedBeanHolder的getBeanInstance实例返回回去. 返回值类型是 T 泛型.
就此结束…..
DI还有一个作用是解决循环依赖的