zoukankan      html  css  js  c++  java
  • Spring源码分析心得-Bean的读取和注册

      Spring广泛的被使用足以证明它的价值,成功的东西自然值得我们深入学习。有很多人说的熟悉Spring也只是简单的使用经验,当我发现我也是其中一员时我很恐惧,所以开始扒源码,准备深入了解,话不多说,直奔主题。首先我们知道Bean是Spring的核心,所以就从这里入手分析一下Spring是如何创建Bean对象的。首先来看一下Bean的继承关系.

      在这份关系图中,我们可以清楚的看见类之间的关系,首先BeanFactory是所有类的父类,准确的说这是一个接口,如果你查找比较老一点的代码的话你可以看见使用的XMLBeanFactory,类似这种BeanFactory bf = new XMLBeanFactory(new ClassPathResources("shuangcheng_wang.xml"));这个类实现了BeanFActory,这个类也是我们分析创建Bean的第一个类,下面看一下源码:

      在这个类中大家可能觉得没什么代码啊,确实,其原因是首先它继承了DefaultListabelBeanFactory主要的关键代码都是在这个类中实现的下面我会分析这个类,在这个类中还有一个非常重要的成员属性就是一个XMLBeanDefinitionReader,这个类是敢什么的呢,首先看名字我们大概猜测这是一个xml读取器,因为Spring很大一部分都是配置文件中,在XMlBeanDefinitionReader中是这么解释这个类的功能的:

      大致意思就是读取文件,然后生成dom节点,将节点交给BeanDefinitionDocumentReader来处理,在XMLBeanDefinitionReader中主要的逻辑是这样的,首先通过InputStream将配置文件读取进来,然后通过读取的流实例化Document对象,接着通过反射实例化XMLDefinitionDocumentReader,通过这个类处理刚刚创建的document对象,用大神总结的话就是:(1)获取到的xml的验证信息,(2)加载xml文件,并得到对应的Document,(3)根据返回的document信息注册Bean.(其中SAX解析xml文档,如果不知道的可以去随便搜搜),而注册的核心代码如下:

      由于个人原因对于这里的一些设计还不是很明白,所以等技术提高以后回来重新修改对注册document的理解。

  • 相关阅读:
    Java操作Excel之POI简单例子
    机器学习之KNN算法
    机器学习之sklearn数据集
    数据分析之matplotlib
    数据分析之pandas
    数据分析之numpy
    python模块contextlib
    前端jsonp解决跨域问题
    django media和static配置
    Django之数据库迁移和创建
  • 原文地址:https://www.cnblogs.com/wscit/p/5653790.html
Copyright © 2011-2022 走看看