Spring之默认标签的解析(四) bean标签的解析及注册(3)—— 解析子元素meta、lookup-method、replaced-method
解析子元素 meta
在开始解析元数据的分析前,我们先回顾一下元数据 meta 属性的使用 。
<bean id=”myTestBean” class=”beanMyTestBean”>
<meta key=”testStr" value=”aaaaaaaa”/>
</bean>
我们知道,这段代码并不会体现在 MyTestBean 的属性当中,而是一个额外的声明,当需要使用里面的信息的时候可以通过 BeanDefinition 的 getAttribute(key)方法进行获取。
- parseMetaElements
public void parseMetaElements(Element ele, BeanMetadataAttributeAccessor attributeAccessor) {
NodeList nl = ele.getChildNodes();
for (int i = 0; i < nl.getLength(); i++) {
Node node = nl.item(i);
if (isCandidateElement(node) && nodeNameEquals(node, META_ELEMENT)) {
Element metaElement = (Element) node;
String key = metaElement.getAttribute(KEY_ATTRIBUTE);
String value = metaElement.getAttribute(VALUE_ATTRIBUTE);
BeanMetadataAttribute attribute = new BeanMetadataAttribute(key, value);
attribute.setSource(extractSource(metaElement));
attributeAccessor.addMetadataAttribute(attribute);
}
}
}
解析子元素 lookup-metho
说实话,lookup-method子元素还真的没有用过,查询一下介绍:
通常将其称之为通常我们称它为获取器注入,获取器注入是一种特殊的方法注入,它是把一个方法声明为返回某种类型的 bean,但实际要返回的 bean 是在配置文件里面配置的,此方法可用在设计有些可插拔的功能上,解除程序依赖。
我们简历几个类去跟踪一下:
- 首先我们创建一个父类。
public class User {
public void showMe (){
System.out.println(" i am user");
}
}
- 创建其子类并覆盖showMe方法。
public class Teacher extends User{
public void showMe (){
System.out.println(" i am Teacher");
}
}
- 创建调用方法。
public