首页 > 编程语言 > 详细

spring源码学习笔记-第一周(BeanFactory)刘欣从零开始造spring

时间:2019-12-26 19:24:35      阅读:189      评论:0      收藏:0      [点我收藏+]

技术分享图片

  1. 对外暴露的Api是AbstractApplicationContex的方法。用AbstractApplicationContext的getBean方法得到一个Bean实例。

  2. 主要的类是DefaultBeanFactory,通过他来连接各个功能类。

  3. XmlBeanDefinitionReader是解析Xml文件的类,也是一个很重要的类,他把Xml文件解析,得到BeanDefinition。

  4. 在BeanDefinitionRegistry接口中抽象了两个方法,用来将解析Xml得到的BeanDefinition注册到BeanDefiniton中的map中(id,BeanDefinition)

  5. BeanFactory是获取Bean实例的接口,具体方法实现也是在DefaultBeanFactory类中,判断是否是单例,如果是单例,调用DefaultSingletonBeanFactory的getBean方法,此时还没有创建实例,所以去创建实例,通过反射创建实例

    ClassLoader beanClassLoader = this.getBeanClassLoader();
                String beanClassName = bd.getBeanClassName();
            try {
    //            return Class.forName(bd.getBeanClassName()).newInstance();
                Class<?> clz = beanClassLoader.loadClass(beanClassName);
                return clz.newInstance();

    将返回的实例放到单例类的map中,下次再调用getBean方法的时候,就直接取出来了。

    如果不是单例,每次都直接创建bean就好了。

    6.ClassPathXmlApplicationContext FileSystemXmlApplicationContext是用来获取Resoutce资源类的,ClassPathResource和他的兄弟类,是将路径下的Xml文件转化为Resource资源类。

    总结:

    感觉功能理解比较容易:每个类的功能都很单一,遵循单一职责原则,每个类都有自己的接口,体现了扩展性,但是自己很菜,看完还是很模糊。

spring源码学习笔记-第一周(BeanFactory)刘欣从零开始造spring

原文:https://www.cnblogs.com/jjpp/p/12103601.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!