1

我想为 element 创建一个解析器。他看起来像

<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' 属性)。

我知道,我可以RuntimeBeanReference只使用 bean 名称,但是有没有办法在解析器中返回它?

4

1 回答 1

1

您返回的BeanDefinition应该是由您的自定义元素表示的 bean 的定义,可以使用org.springframework.beans.factory.support.BeanDefinitionBuilder. 我假设 ref 应该是该 bean 的构造函数参数或属性。

如果您只是尝试对 ref 引用的 bean 执行一些处理,那么您应该使用 aorg.springframework.beans.factory.config.BeanPostProcessor来执行此操作。

于 2013-01-25T11:07:49.147 回答