通过上述Spring IoC容器对载入的Bean定义Document解析可以看出,我们使用Spring时,在Spring配置文件中可以使用
对于既不是
4.BeanDefinitionParserDelegate解析Bean定义资源文件中的
Bean定义资源文件中的
- //解析
元素的入口 public BeanDefinitionHolder parseBeanDefinitionElement(Element ele) { - return parseBeanDefinitionElement(ele, null); }
- //解析Bean定义资源文件中的
元素,这个方法中主要处理 元素的id,name //和别名属性 - public BeanDefinitionHolder parseBeanDefinitionElement(Element ele, BeanDefinition containingBean) { //获取
元素中的id属性值 - String id = ele.getAttribute(ID_ATTRIBUTE); //获取
元素中的name属性值 - String nameAttr = ele.getAttribute(NAME_ATTRIBUTE); ////获取
元素中的alias属性值 - List
aliases = new ArrayList (); //将 元素中的所有name属性值存放到别名中 - if (StringUtils.hasLength(nameAttr)) { String[] nameArr = StringUtils.tokenizeToStringArray(nameAttr, BEAN_NAME_DELIMITERS);
- aliases.addAll(Arrays.asList(nameArr)); }
- String beanName = id; //如果
元素中没有配置id属性时,将别名中的第一个值赋值给beanName - if (!StringUtils.hasText(beanName) && !aliases.isEmpty()) { beanName = aliases.remove(0);
- if (logger.isDebugEnabled()) { logger.debug(No XML 'id' specified - using ' + beanName +
- ' as bean name and + aliases + as aliases); }
- } //检查
元素所配置的id或者name的唯一性,containingBean标识 - //元素中是否包含子
元素 if (containingBean == null) { - //检查
元素所配置