spring是如何创建bean对象的

基于构造方法和set依赖注入来构造的。

spring启动时,会先创建一个spring容器,然后循环遍历扫描包下的类上有包含@Component注解的类,然后基于构造方法创建这个bean对象放入单例池中(默认单例模式)然后扫描bean对象中有@Autowired注解的对象,对其进行依赖注入,从单例池中找。单例模式是基于单例池,用一级缓存来实现的,是一个map接口的实现类。

扫描是基于反射来实现的

其中还有bean定义  bean工厂的流程。

 

UserService类-->无参的构造方法-->对象-->依赖注入-->初始化前(@PostConstruct)-->初始化(InitializingBean)-->初始化后-->放入单例池中-->Bean对象

UserService类-->无参的构造方法-->普通对象-->依赖注入-->初始化前(@PostConstruct)-->初始化(InitializingBean)-->初始化后(AOP)-->代理对象-->放入单例池中-->Bean对象

 

bean的实例化就是用基于无参构造方法获得的对象

bean的初始化就是执行实例化这个对象中的某一个方法,例如执行实现InitializingBean接口的方法(实现InitializingBean接口),或者是bean定义的方法

 
 
 
 
posted @   古家杰  阅读(338)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示