解析BeanDefinition之解析子元素lookup-method。

来源:互联网 发布:背诵单词软件 编辑:程序博客网 时间:2024/05/21 12:50

// 解析lookup-method属性

parseLookupOverrideSubElements(ele, bd.getMethodOverrides());


同样,子元素lookup-method似乎并不是很常用,但是在某些时候它的确是非常有用的属性,通常我们称它为获取器诸如。引用《Spring in Action》中的一句话:获取器注入是一种特殊的方法注入,它是把一个方法声明为返回某种类型的bean,但实际要返回的bean是在配置文件里面配置的,此方法可用在涉及有些可插拔的功能上,解除程序依赖。


parseLookupOverrideSubElement(Element beanEle, MethodOverrides overrides);

//获取当前节点的所有子元素,进行遍历

NodeList nl = beanEle.getChildNodes();

//仅当在Spring默认bean的子元素下且为<lookup-method时有效

if(isCandidateElement(node) && nodeNameEquals(node, LOOKUP_METHOD_ELEMENT)) {

//获取要修饰的方法

String methodName = ele.getAttribute(NAME_ATTRIBUTE);

//获取配置返回的bean

String beanRef = ele.getAttribute(Bean_Element);

//  使用LookupOverride类型的实体类进行数据承载

LookupOverride override = new LookupOverride(methodName, beanRef);

override.setSource(extractSource(ele));

// 记录信息

override.addOverride(override);

}


上面代码很熟悉,与parseMetaElements的代码大同小异,最大的区别就是在if判断中的节点名称在这里被修改为LOOKUP_METHOD_ELEMENT。还有,在数据存储上面通过使用LookupOverride类型的实体类来进行数据承载并记录在AbstractBeanDefinition中的methodOverrides属性中。

阅读全文
0 0
原创粉丝点击