2016-10-03 1 views
0

Ich habe einen Parser.Wie man Bean in BeanDefinitionParser injiziert?

Ich möchte in den Parser eine Zeichenfolge (playerName) injizieren. Dazu erstelle ich eine Bean und verbinde sie mit dem Kontext.

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

Wenn ich eine GenericXmlApplicationContext erstellen führt sie BeanDefinitionParser Methode ‚parseInternal‘ aber ich weiß nicht meine Abhängigkeit sehen. Hier ist meine Frage: Wie kann ich einen playerName auf MyAbstractBeanDefinitionParser injizieren?

Antwort

0

Wenn ich richtig verstanden habe, versuchen Sie, einen String-Wert in playerName Feld zu injizieren. Dies kann einfach mit der @Value Annotation erfolgen.

So:

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

In diesem Beispiel wird das Feld player wird den Wert halten:

Der Wert String Sie

Die einzige Konfiguration Sie tun müssen, um injizieren wollen , damit das obige funktioniert, fügen Sie einfach Ihrer Bean XML - Konfigurationsdatei folgende Zeile hinzu:

<context:annotation-config/> 
+0

Ich erstelle einen Kontext manuell über 'new GenericXmlApplicationContext()'. – Finkelson

+0

Was ist das Problem? –

+0

Verkabelung funktioniert nicht. – Finkelson

0

Dies verwendet ausschließlich die Spring XML-Bean-Konfiguration und eliminiert somit die Bean-Erstellung im Java-Code. Sobald Ihr Kontext geladen ist, erstellt Spring die folgende Bean:

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