Я не пойму, как мне заменить один 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
Здравствуйте, Бип-бип, Вы писали:
ББ>Скажем есть задача заменить 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>>