Spring | createBeanInstance传入的有参和 applyPropertyValues中的属性有什么关系
基本功能
createBeanInstance
Bean的实例化
- 会根据构造函数参数创建Bean的实例。构造函数参数通常是通过依赖注入提供的,这些依赖可能是其他bean或者简单的值类型
applyPropertyValues
Bean的属性设置
- 在Bean实例创建后,负责将剩余的属性值注入到Bean实例中。这些属性值可能来自于Bean定义中的setter方法、字段注入或者是默认构造函数创建后的属性设置
相互关系
- 构造函数参数与属性注入的互补性
- 如果Bean使用了有参构造函数,构造函数的参数通常会在
createBeanInstance
阶段解决,这些参数可能是其他Bean的引用或简单值 - 剩余的属性,即那些没有通过构造函数初始化的属性,将在
applyPropertyValues
阶段通过setter方法或其他注入策略进行填充
- 依赖关系的传递性
createBeanInstance
阶段解决的构造函数参数依赖,可能本身就是通过applyPropertyValues
在它们自己的Bean
实例化过程中填充的- 当一个Bean通过构造函数依赖于另一个Bean时,后者也必须经过
createBeanInstance
和applyPropertyValues
的过程来确保完全初始化
- 属性注入的顺序
createBeanInstance
优先处理构造函数依赖,确保Bean
实例在创建时就具备了核心依赖applyPropertyVlues
则处理剩余的属性注入,确保Bean完全配置好,准备就绪