2016-10-03 54 views
0

我有一個解析器。如何將Bean注入BeanDefinitionParser?

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

我想注入一個字符串(playerName)的解析器。爲此,我創建一個bean並將其連接到上下文。

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

當我創建一個GenericXmlApplicationContext它執行BeanDefinitionParser法「parseInternal」,但我不認爲我的依賴。這裏是我的問題:我如何注入一個playerName到MyAbstractBeanDefinitionParser

回答

0

如果我理解正確,您正嘗試向playerName字段注入字符串值。這可以通過使用@Value註釋輕鬆完成。

像這樣:

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

在這個例子中playerName場將持有的價值:

要注入

你必須做的唯一配置的字符串值,爲了達到上述目的,只需添加到您的Bean XML配置文件中:

<context:annotation-config/> 
+0

我通過'new GenericXmlApplicationContext()'手動創建一個上下文。 – Finkelson

+0

然後是什麼問題? –

+0

接線不起作用。 – Finkelson

0

這嚴格使用Spring XML bean配置,從而消除了java代碼中的bean創建;一旦你的上下文被加載,spring將創建如下的bean:

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