(一)bean
1.解析出配置文件的各种属性(元素解析,信息提取)
protected void processBeanDefinition(Element ele, BeanDefinitionParserDelegate delegate) {
// 元素解析,得到bdHolder (包括配置文件中配置的各种属性,例如class、name、id、alias)
BeanDefinitionHolder bdHolder = delegate.parseBeanDefinitionElement(ele);
// 如果bdHolder不为空,若存在默许标签的子节点下再有自定义属性,须要再次对自定义标签进行解析
if (bdHolder != null) {
bdHolder = delegate.decorateBeanDefinitionIfRequired(ele, bdHolder);
try {
// 解析完成后,对解析后的bdHolder 进行注册
BeanDefinitionReaderUtils.registerBeanDefinition(bdHolder, getReaderContext().getRegistry());
}
catch (BeanDefinitionStoreException ex) {
getReaderContext().error("Failed to register bean definition with name "" + bdHolder.getBeanName() + """, ele, ex);
}
// 发出响应事件,通知相干的监听器,这个bean已加载完成了
getReaderContext().fireComponentRegistered(new BeanComponentDefinition(bdHolder));
}
}protected voi