网站建设 华南商网,wordpress 视频站,asp成品网站,河北黄骅市网站建设Bean是怎么被创建#xff0c;如何获取Bean#xff0c;基于Spring 5.3.24版本#xff0c;Spring Boot 可用 2.7.6 结论#xff1a;
创建#xff1a;非懒加载的单实例bean在容器创建的时候创建#xff0c;通过beanFactory的doGetBean方法#xff0c;利用反射进行创建如何获取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