Spring-как загрузить бин?
От: Бип-бип  
Дата: 27.12.05 14:38
Оценка:
Я не пойму, как мне заменить один bean на другой в runtime.
Вопрос такой:
Возможно ли вообще загружать(inject) bean, который не прописан в app_context.xml изначально?

Скажем есть задача заменить bean на другой в runtime.
Я могу загрузить новый xml , где новий bean прописан, но как поместить его class в classpath?
есть ли простой способ и как опытные спрингисты поступают в таких случаях?
Спасибо огромное!

//load new xml:
String[] configFiles = new String[] { "c:/temp/new_xml.xml"};
//create new factory
BeanFactory factory = new FileSystemXmlApplicationContext(configFiles);
//Try get bean from factory:
Object obj = factory.getBean("collector");

Exception(class not found):
org.springframework.beans.factory.BeanDefinitionStoreException: Error registering bean with name 'collector' defined in file [c:\temp\new_xml.xml]: Bean class [example.collectors.ProxyCollector] not found; nested exception is java.lang.ClassNotFoundException: example.collectors.ProxyCollector
Re: Spring-как загрузить бин?
От: Lucker Беларусь http://lucker.intervelopers.com/
Дата: 27.12.05 14:49
Оценка:
Здравствуйте, Бип-бип, Вы писали:

ББ>Скажем есть задача заменить bean на другой в runtime.

HotSwappableTargetSource, но не уверен что тебе это нужно.

ББ>Я могу загрузить новый xml , где новий bean прописан, но как поместить его class в classpath?

FileSystemXmlApplicationContext factory = new FileSystemXmlApplicationContext(configFiles);
factory.setclassLoader(new URLClassLoader(new URL[]{new URL("yourJar.jar")}));
... << RSDN@Home 1.1.4 beta 7 rev. 447>>
Re[2]: Spring-как загрузить бин?
От: Бип-бип  
Дата: 27.12.05 15:10
Оценка:
Здравствуйте, Lucker, Вы писали:

ББ>>Я могу загрузить новый xml , где новий bean прописан, но как поместить его class в classpath?

L>FileSystemXmlApplicationContext factory = new FileSystemXmlApplicationContext(configFiles);
L>factory.setclassLoader(new URLClassLoader(new URL[]{new URL("yourJar.jar")}));

спасибо, но к сожалению это не работает: ошибка та же — не видно bean,
наверно CustomClassLoader+bean — это уже совсем не тот bean, который ожидает factory.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.