Spring懒加载的单例Bean获取过程是怎样的
导读:本文共3634.5字符,通常情况下阅读需要12分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: 前言xml的读取应该是Spring的重要功能,因为Spring的大部分功能都是以配置做为切入点的。我们在静态代码块中读取配置文件可以这样做://这样来加载配置文件XmlBeanFactoryfactory=newXmlBeanFactory(newClassPathResource("beans.xml"));(1)XmlBeanFacto... ...
目录
(为您整理了一些要点),点击可以直达。xml的读取应该是Spring的重要功能,因为Spring的大部分功能都是以配置做为切入点的。
参数doc是doLoadBeanDefinitions()方法传进来的 loadDocument 加载过来的。这边就很好的体现出了面向对象的单一全责原则,将逻辑处理委托給单一的类去处理。
在这边单一逻辑处理类是: BeanDefinitionDocumentReader
核心方法: documentReader.registerBeanDefinitions(doc, createReaderContext(resource));
开始解析:
在Spring的xml配置中有两种方式来声明bean:
对于默认标签的解析:
对Bean 配置的解析:
BeanDefinitionHolder bdHolder = delegate.parseBeanDefinitionElement(ele); 返回BeanDefinitionHolder
这边代码大致看下来:
提取元素中的id和name属性
进一步解析将其他属性封装到 BeanDefinition 的实现类中
如果没有指定beanName 变使用默认规则生成beanName
封装类BeanDefinitionHolder
可以先了解一下 BeanDefinition 这个类的作用。
Spring容器的BeanDefinitonRegistry就像是Spring配置信息的内存数据库,主要是以map的形式保存的。
然后就是各种对属性的解析的具体方法:
Spring懒加载的单例Bean获取过程是怎样的的详细内容,希望对您有所帮助,信息来源于网络。