Spring源码分析(五)推断构造方法
作者:互联网
- AbstractAutowireCapableBeanFactory类中的createBeanInstance()方法会去创建一个Bean实例
- 根据BeanDefinition加载类得到Class对象
- 如果BeanDefinition绑定了一个Supplier,那就调用Supplier的get方法得到一个对象并直接返回
- 如果BeanDefinition中存在factoryMethodName,那么就调用该工厂方法得到一个bean对象并返回
- 如果BeanDefinition已经自动构造过了,那就调用autowireConstructor()自动构造一个对象
- 调用SmartInstantiationAwareBeanPostProcessor的determineCandidateConstructors()方法得到哪些构造方法是可以用的
- 如果存在可用得构造方法,或者当前BeanDefinition的autowired是AUTOWIRE_CONSTRUCTOR,或者BeanDefinition中指定了构造方法参数值,或者创建Bean的时候指定了构造方法参数值,那么就调用**autowireConstructor()**方法自动构造一个对象
- 最后,如果不是上述情况,就根据无参的构造方法实例化一个对象
标签:调用,构造方法,对象,Spring,源码,Supplier,方法,BeanDefinition 来源: https://blog.csdn.net/caicongyang/article/details/122816561