S1xml文件等资源类
-- 对各种资源类的封装+encode
S2读取xml文件
-- 对xml文件的校验、load、read(这里的read调用BeanDefinitionDocumentReader)
主要在XmlBeanDefinitionReader
中
S3解析属性(xml中标签)
--从xml到Bean
实现在DefaultBeanDefinitionDocumentReader
doRegisterBeanDefinitions()
中解析了profile
属性,并且其中的parseBeanDefinitions()
是解析xml的开始。
根据不同的namespace
和nodename
,分别不同处理
if (delegate.nodeNameEquals(ele, IMPORT_ELEMENT)) {
importBeanDefinitionResource(ele);
}
else if (delegate.nodeNameEquals(ele, ALIAS_ELEMENT)) {
processAliasRegistration(ele);
}
else if (delegate.nodeNameEquals(ele, BEAN_ELEMENT)) {
processBeanDefinition(ele, delegate);
}
else if (delegate.nodeNameEquals(ele, NESTED_BEANS_ELEMENT)) {
// recurse
doRegisterBeanDefinitions(ele);
}
处理过程涉及到BeanDefinitionParserDelegate BeanDefinitionHolder BeanDefinitionReaderUtils XmlReaderContext
delegate中对元素(属性)进行解析,结果放入holder中,此时holder已经包含了各种属性。再由Utils中将holder进行注册。最后由context将注册结果通知监听器。
S4注册
网友评论