如何将bean注入BeanDefinitionParser?

时间:2016-10-03 21:07:02

标签: java spring dependency-injection

我有一个解析器。

class MyAbstractBeanDefinitionParser extends AbstractBeanDefinitionParser {
    @Autowired
    private String playerName;
    // getters/setters
}

我想向解析器注入一个String(playerName)。为此,我创建了一个bean并将其连接到上下文。

ConfigurableListableBeanFactory beanFactory = ctx.getBeanFactory();
beanFactory.registerSingleton("playerName", name);

当我创建GenericXmlApplicationContext时,它会执行BeanDefinitionParser方法' parseInternal'但我没有看到我的依赖。以下是我的问题:如何将playerName注入MyAbstractBeanDefinitionParser

2 个答案:

答案 0 :(得分:0)

如果我理解正确,您正尝试将一个String值注入playerName字段。这可以使用@Value注释轻松完成。

像这样:

class MyAbstractBeanDefinitionParser extends AbstractBeanDefinitionParser {
    @Value("The value String you want to inject")
    private String playerName;
}

在此示例中,playerName字段将保存值:

要注入的值

您必须执行的唯一配置,为了使上述操作正常,只需在Bean XML配置文件中添加以下行:

<context:annotation-config/>

答案 1 :(得分:0)

这严格使用 Spring XML bean配置,从而消除了java代码中的bean创建;加载上下文后,spring将创建下面的bean:

<bean name = "MyAbstractBeanDefinitionParser" class="x.x.package.MyAbstractBeanDefinitionParser">
    <property name="playerName" value="YourString">
    </property>
</bean>