会调用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还有一个作用是解决循环依赖的