我想为元素创建一个解析器。 他看起来像
<custom-element ref="beanName"/>
我想要这样的东西 -
public class CustomElementDefinitionParser implements BeanDefinitionParser{
@Override
public BeanDefinition parse(Element element, ParserContext parserContext) {
String refName = element.getAttribute("ref");
if(!refName.isEmpty()){
return ?????;
}else
throw new RuntimeException("Must have 'ref' attribute!!");
}
}
但我不知道如何返回BeanDefinition,如果我只知道bean的名字(它是'ref'属性)。
我知道,我只能使用bean名称来创建RuntimeBeanReference
,但有没有办法在解析器中返回它?
答案 0 :(得分:1)
您返回的BeanDefinition
应该是您的自定义元素表示的bean的定义,可以使用org.springframework.beans.factory.support.BeanDefinitionBuilder
创建。我认为ref应该是构造函数参数或该bean的属性。
如果您只是尝试对ref引用的bean执行某些处理,那么您应该使用org.springframework.beans.factory.config.BeanPostProcessor
来执行此操作。