Spring 容器原始 Bean 是如何创建的?
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
本文介绍了Spring容器创建Bean的核心过程,主要聚焦于createBeanInstance
方法的内部执行逻辑。文章以Spring源码中方法的执行顺序为例,逐步分析了Bean的创建过程。
1. doCreateBean
在doCreateBean
方法中,通过调用createBeanInstance
方法来真正创建Bean实例。该过程包括前置后置处理器的调用,但文章主要关注单纯的Bean创建过程。
2. createBeanInstance
这个方法负责根据配置创建Bean。首先是resolveBeanClass
方法解析当前的beanClass对象,它通过反射根据配置的类全路径加载Class对象,支持SpEL表达式。
2.1 resolveBeanClass
这一步主要是通过反射加载出Class对象,支持直接的类路径配置或SpEL表达式配置。
2.2 Supplier 和 factory-method
如果配置了Supplier或factory-method,将使用这些方式获取Bean实例。
2.3 re-create逻辑
如果Bean之前已经创建过,就不需要重新确定构造方法,直接使用已解析的构造方法创建Bean实例。
2.4 构造器注入
涉及SmartInstantiationAwareBeanPostProcessor
的处理,可能会根据提供的构造方法创建Bean。
2.5 PreferredConstructors
针对Kotlin的主构造方法,Java开发者可以忽略。
2.6 instantiateBean
使用无参构造方法创建Bean实例。
3. 小结
文章总结了Spring容器中原始Bean的创建步骤,内容庞杂。作者还分享了一个时序图作为参考,并指出熟悉Spring用法是理解源码的关键。
同时,文章开头提到了TienChin视频杀青,该项目使用Spring Boot和Vue3技术栈,并邀请读者参与完成一个完成率超90%的项目。
想要了解更多内容?