【Spring】核心类相关

本文详细介绍了Spring框架中的核心类DefaultListableBeanFactory和XmlBeanDefinitionReader。DefaultListableBeanFactory允许为bean设置别名,而XmlBeanDefinitionReader则具备EnvironmentCapable接口,能够读取bean定义。通过doLoadBeanDefinitions()方法,资源被转化为Document,再由BeanDefinitionDocumentReader解析XML,处理bean定义,涉及XML解析验证的DTD和XSD策略。
摘要由CSDN通过智能技术生成

一、 DefaultListableBeanFactory

类图

1. Alias:bean的定义中,可以给bean设置别名。

// 配置文件中定义了一个JavaBean

<bean id="some" class="src.com.Some"/>

// 我要给这个JavaBean增加别名,以方便不同对象来调用。我们就可以这样写:

<bean id="some" class="src.com.Some"/>
    <alias name="some" alias="someJava,oneBean,twoBean"/>

// 或者是用name属性来指定,如:

<bean id="some" name="oneBean,twoBean,threeBean" class="src.com.Some"/>

 

二、XmlBeanDefinitionReader

 

类图

1. EnvironmentCapable:定义获取Environment方法。

Environment用来表示整个Spring应用运行时所处的环境。Capable后缀的接口在Spring中带有getXXX的含义,也就是实现了这个接口,就可以通过该接口的实例获取到XXX。

2.BeanDefinitionReader:读取bean的定义如Registry、Resource、Class。

3.doLoadBeanDefinitions()方法中的流程:

(1) 获取Resource实例

(2) 通过DocumentLoader将resource转换为Document

Document doc = doLoadDocument(inputSource, resource);

Document loadDocument(
			InputSource inputSource, EntityResolver entityResolver,
			ErrorHandler errorHandler, int validationMode, boolean namespaceAware)
			throws Exception;

loadDocument中有个validationMode参数。这个参数指的是XML解析验证方式:DTD, XSD。

XML解析验证DTD和XSD

(3) 通过BeanDefinitionDocumentReader对ducument解析,并对element进行解析。

int count = registerBeanDefinitions(doc, resource);

public int registerBeanDefinitions(Document doc, Resource resource) throws BeanDefinitionStoreException {
		BeanDefinitionDocumentReader documentReader = createBeanDefinitionDocumentReader();
		int countBefore = getRegistry().getBeanDefinitionCount();
		documentReader.registerBeanDefinitions(doc, createReaderContext(resource));
		return getRegistry().getBeanDefinitionCount() - countBefore;
	}

public void registerBeanDefinitions(Document doc, XmlReaderContext readerContext) {
		this.readerContext = readerContext;
		doRegisterBeanDefinitions(doc.getDocumentElement());
	}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值