我可以在Spring解析器中返回RuntimeBeanReference吗?

时间:2013-01-25 10:31:41

标签: java spring

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

<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,但有没有办法在解析器中返回它?

1 个答案:

答案 0 :(得分:1)

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

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