Spring源码学习——(二)

简介: 第二讲——了解BeanFactory的功能

直接找到BeanFactory的源码,按ctrl+F12查看整个类的结构,有如下结果:
image.png

表面上看起来很简单,仿佛就是几个函数而已。实际上BeanFactory的功能实现都在它的默认实现类中,即DefaultListableBeanFactory中。我们找到这个类,并查看它的继承关系图:
image.png
显然,它实现了BeanFactory。我们从它实现的一个单例Bean类来进行分析,即DefaultSingletonBeanFactory中进行分析,查看源码:
image.png

这个红色的Map集合就是所有的单例对象了。我们通过反射拿到这个私有对象,编写测试代码如下:

        try {
            Field singletonFactories = DefaultSingletonBeanRegistry.class.getDeclaredField("singletonObjects");
            singletonFactories.setAccessible(true);
            ConfigurableListableBeanFactory beanFactory = context.getBeanFactory();
            Map<String,Object> map = (Map<String,Object>)singletonFactories.get(beanFactory);
            map.forEach((k,v)->{
                System.out.println("k:" + k + ",v:" + v);
            });
        } catch (Exception e) {
            throw new RuntimeException(e);
        }

通过反射代码拿到DefaultSingletonBeanRegistry实例中的singletonObjects,并输出,我么可以看到结果其实就是应用程序中的单例对象:
image.png
使用@SpringConfiguration+@Bean注解的Commponent也在对应的输出列表中:
image.png

        /**
         * 2.BeanFactory能干点啥
         *      - 表面上只有getBean
         *      - 实际上控制反转、基本的依赖注入、直至Bean的生命周期的各种功能,都是由他的实现类来提供
         */
相关文章
|
9天前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的公考学习平台附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的公考学习平台附带文章源码部署视频讲解等
18 5
|
1天前
|
Java 数据格式 微服务
2024最新首发,全网最全 Spring Boot 学习宝典(附思维导图)
📚 《滚雪球学Spring Boot》是由CSDN博主bug菌创作的全面Spring Boot教程。作者是全栈开发专家,在多个技术社区如CSDN、掘金、InfoQ、51CTO等担任博客专家,并拥有超过20万的全网粉丝。该教程分为入门篇和进阶篇,每篇包含详细的教学步骤,涵盖Spring Boot的基础和高级主题。
22 4
2024最新首发,全网最全 Spring Boot 学习宝典(附思维导图)
|
6天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的在线学习过程管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的在线学习过程管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的在线学习过程管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
|
6天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的大学生国学自主学习平台的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的大学生国学自主学习平台的详细设计和实现(源码+lw+部署文档+讲解等)
|
6天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的诗词学习系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的诗词学习系统的详细设计和实现(源码+lw+部署文档+讲解等)
|
8天前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的学生网课学习效果评价附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的学生网课学习效果评价附带文章源码部署视频讲解等
24 2
|
9天前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的语言课学习系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的语言课学习系统附带文章源码部署视频讲解等
13 3
|
9天前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的诗词学习系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的诗词学习系统附带文章源码部署视频讲解等
13 1
|
9天前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的中医学习服务管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的中医学习服务管理系统附带文章源码部署视频讲解等
14 1
|
9天前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的在线学习过程管理系统软件附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的在线学习过程管理系统软件附带文章源码部署视频讲解等
13 1