响应式网站自助建设平台wordpress手机轻主题
Bean是怎么被创建,如何获取Bean,基于Spring 5.3.24版本,Spring Boot 可用 2.7.6
结论:
- 创建:非懒加载的单实例bean在容器创建的时候创建,通过
beanFactory的doGetBean方法,利用反射进行创建,创建完后存储在名为singletonObjects的map 集合里,key为bean名称,value为bean对象 - 获取:获取bean时通过调用doGetBean方法从之前的map集合里进行获取
 
创建Bean
第一步:编写基础代码,编写一个实体类,在applicationContext配置文件中注册,跟断点进行调试
 

 
这个refresh 很重要,
 
初始化非懒加载的单例 Bean
 
和上面方法注释一样
 
查看它的实现,如果有多个实现类,需要Debug的方式去跳转
 
来到DefaultListableBeanFactory如果不是FactoryBean
 
 
注释很明显,写的创建bean实例,而且我们这个是单例bean
 
这里必须用断点的形式,然后进入该方法
 
可以看到又回到了doGetBean方法里的createBean这里
 
然后通过断点进入该方法
 
断点进去
 
使用无参构造实例化
 
 
 
看到通过反射创建了对象,newInstance 方法
 
何时加入容器中,在getSingleton 方法里创建完对象后
 
 
获取Bean
 
在 getBeanFactory() 后调用 getBean()
 
可以看到这里又调用 doGetBean 方法
 
 
 
最后得到bean
 
