2009-12-09 8 views
5

Chciałbym móc wczytywać pliki spring.xml w locie, tak aby były podłączone do wcześniej wczytanych kontekstów (co oznacza, w contextA.xml mogę odesłać komponent bean zdefiniowany w contextB.xml, który był już załadowany). Chciałbym, aby istniejące fasolki nie były niszczone, a następnie tworzone za każdym razem, gdy dodawany jest kontekst.wiosna: dodawać kontekst xml w locie?

Odpowiedz

4

Łatwo to zrobić, większość implementacji BeanFactory i ApplicationContext ma koncepcję kontekstu nadrzędnego.

BeanFactory newFactory = new XmlBeanFactory(xmlResource, yourParentBeanFactory); 

// if you what an ApplicationContext 

ApplicationContext newContext = new ClassPathXmlApplicationContext(new String[]{"newBeans.xml"}, parent); 

zobaczyć http://static.springsource.org/spring/docs/2.5.x/api/org/springframework/beans/factory/xml/XmlBeanFactory.html

Referencje wewnątrz nowego kontekstu, które nie mogą być rozwiązane w ciągu to samo zapadają się do rodzica i jego rodzicem.

Uwaga: można uzyskać aktualny kontekst aplikacji, wprowadzając ApplicationContextAware.

+0

I bez użycia rodzica? – IttayD

+1

wymagałoby to zmiany kontinuum czasoprzestrzeni i przekraczania strumieni w tym samym czasie. Nadanie nowego kontekstu rodzicowi jest sposobem na zrobienie tego, tak naprawdę nie ma żadnej innej opcji. –

+0

Właściwie możesz po prostu użyć 'new ClassPathXmlApplicationContext (new String [] {" newBeans.xml "})'. Wtedy otrzymasz nowy kontekst wiosenny, który jest całkowicie niezwiązany z istniejącym kontekstem. – sleske

Powiązane problemy