源码地址:https://github.com/spring-projects/spring-framework
仓库地址:https://gitcode.net/qq_42665745/spring/-/tree/03-parameter-constructor-instantiation
Bean有参构造实例化
有参构造的实例化分两种:
- java自带的反射
- cglib代理生成目标类的子类
流程:
1.创建BeanFactory工厂
2.注册和管理UserService的BeanDefinition元数据
3.根据beanName和args获取bean对象,先从单例表中获取,有直接返回;没有就先去拿BeanDefinition,然后使用BeanDefinition进行实例化
4.先判断使用有参构造还是无参构造实例化bean,然后策略模式调用真正的实现类做实例化。
getBean()的args传null,使用无参构造实例化Bean
5.将Bean放入单例表中