最近看分布式平台消息队列组件源码的时候,涉及到了使用继承自NamespaceHandlerSupport的类来向spring容器中注入bean定义解析器
NamespaceHandler
直接上NamespaceHandler代码:
public interface NamespaceHandler {
/**
* 初始化向spring容器中注册bean定义解析器
*/
void init();
/**
* 解析函数
*/
BeanDefinition parse(Element var1, ParserContext var2);
BeanDefinitionHolder decorate(Node var1, BeanDefinitionHolder var2, ParserContext var3);
}
NamespaceHandlerSupport
NamespaceHandlerSupport则是NamespaceHandler的实现,但仍然是抽象类
首先它有如下变量:
private final Map<String, BeanDefinitionParser> parsers = new HashMap();
private final Map<String, BeanDefinitionDecorator> decorators = new HashMap();
private final Map<String, BeanDefinitionDecorator> attributeDecorators = new HashMap();
这三个HashMap中装的分别是:Bean定义解析器和装饰器
构造函数:
public NamespaceHandlerSupport() {
}
实现父类parse函数:</