1. meta元素的使用
在解析元数据的分析之前,我们先回顾一下 meta属性的使用:
这段代码并不会体现在 CarFactoryBean 的属性当中,而是一个额外的声明,当需要里面的属性时,可以通过BeanDefinition的getAttribute(key);方法获取,
对meta属性解析的代码如下:
beans/src/main/java/org/springframework/beans/factory/xml/BeanDefinitionParserDelegate.java
1 public void parseMetaElements(Element ele, 2 BeanMetadataAttributeAccessor attributeAccessor) { 3 // 获取当前节点下的所有子元素 4 NodeList nl = ele.getChildNodes(); 5 for (int i = 0; i < nl.getLength(); i++) { 6 Node node = nl.item(i); 7 // 提取meta 8 if (isCandidateElement(node) && nodeNameEquals(node, META_ELEMENT)) { 9 Element metaElement = (Element) node;10 String key = metaElement.getAttribute(KEY_ATTRIBUTE);11 String value = metaElement.getAttribute(VALUE_ATTRIBUTE);12 // 使用 key,value 构造 BeanMetadataAttribute13 BeanMetadataAttribute attribute = new BeanMetadataAttribute(key, value);14 attribute.setSource(extractSource(metaElement));15 // 记录信息16 attributeAccessor.addMetadataAttribute(attribute);17 }18 }19 }