2012-03-27 11 views
0

Ich habe versucht, ein besseres zu finden, was das zu tun ist. Im Frühling müssen viele meiner Klassen Beans (Objekte) von XmlBeanFactory laden. Also habe ich die folgende Zeile in den meisten meiner KlassenBeanFactoryAware ?? Woher weiß es, welche BeanFactory zu verwenden ist?

private static XmlBeanFactory beanFactory = new XmlBeanFactory(new ClassPathResource("config.xml")) 

Dann hat jemand geschrieben, dass ich meine Klassen BeanFactoryAware implementieren lassen, die sie Instanz der Bohne Fabrik geben, so dass Sie einen von BeanFactory.getBean nennen könnte (. direkt.) Methoden ...

I BeanFactoryAware in den Klassen implementieren, aber jetzt bin ich immer

java.lang.NullPointerException 

wie ich versuche, die Fabrik von meinem Objekt zuzugreifen. vermisse ich etwas? Wie kennt Spring die zu verwendende BeanFactory?

Antwort

1

Das Objekt, das BeanFactoryAware implementiert, sollte eine Bohne sein, die Bohnenfabrik eingespritzt zu haben hat. Es wird als Teil der Bohnenverarbeitung durchgeführt.

Bean factory injected ist derjenige, der die Bean instanziiert BeanFactoryAware implementiert.

+0

danke ... membisz ... – SJS

1

Das ist einfach falsch und sehr viel widerspricht dem gesamten Punkt des Frühlings. Wenn Sie in jedem Objekt, in dem Sie es benötigen, eine neue Bean-Factory erstellen, erstellen Sie auch neue Instanzen aller in Ihrer Spring-Konfiguration (und Annotationen) definierten Beans.

Der springende Punkt des Frühlings ist eine Bohnenfabrik zu schaffen und es haben Sie Ihr ganzes Objektdiagramm, durch Bean Deklarationen und Verdrahtung. Ich würde dir raten, ein paar Frühlings-Tutorials zu lesen, oder wenn du andere Leute um dich herum hast, die mehr Erfahrung mit Spring haben, bitte sie, dir ein Intro zu geben.

+0

Willst du sagen, BeanFactoryAware ist schlecht? – SJS

+0

Es hängt davon ab, was Sie erreichen möchten. Wenn Sie nur die Bean-Factory in einer Bean verwenden möchten, um eine andere Bean zu erhalten, sollten Sie @Autowired verwenden (oder explizit injizieren, wenn Sie xml config verwenden). Wenn Sie wirklich die Bohne Fabrik brauchen, ist BeanFactoryAware der Weg zu gehen. – pap

Verwandte Themen