У меня есть сценарий, где у меня есть веб-приложение. В моем веб-приложении я импортировал «applicationContext. xml» из двух других файлов jar. В двух импортированных контекстных файлах мало общих компонентов. В одном из моих классов в веб-приложении у меня была ситуация, когда я использую функции из обоих jar-файлов.
Function 1 from jar 1 : getEmployeeDetails() - needs "employeeBean" - "com.practice.Employee"
Function 2 from jar 2 : getEmployeeSalaryBreakup() - needs "employeeBean" - "com.practice.compensation.Employee"
Теперь проблема в том, что второй вызов функции прерывается, потому что он не может отобразить боб. Это дает classCastException. Я не выполняю автоматическую раздачу bean-компонентов в моем веб-приложении, они вызываются в jar-файлах.
Одним из решений, которое я попробовал, было уничтожение существующего компонента и его повторная инициализация. Код PSB для того же:
/*
getEmployeeDetails() //call here, uses employeeBean - com.practice.Employee
*/
ConfigurableApplicationContext configContext = (ConfigurableApplicationContext)applicationContext;
SingletonBeanRegistry registry = configContext.getBeanFactory();
registry.destroyBean("employeeBean"); //trying to destroy existing bean
registry.registerSingleton("employeeBean", "com.practice.compensation.Employee"); //reinitialize bean with new definition
/*
getEmployeeSalaryBreakup() //call here, expecting it will use new bean definition
*/
Вышеуказанная реализация не работает для меня, "registry.destroyBean (" employeeBean ");" - даже после выполнения этой строки старое определение bean-компонента все еще сохраняется.
Может кто-нибудь подсказать, что мне не хватает, или какое-то другое решение для выполнения sh этого. Как файлы JAR и их контекстные файлы не в моем контроле. Поэтому мне нужно справиться с этим на уровне веб-приложения.