Как заменить компонент через экземпляр PicoContainer?
Я работаю в среде, где я не контролирую запуск PicoContainer, он предоставляется мне так:
ApplicationManager.getApplication().getPicoContainer().getComponentInstanceOfType(Xyz.class);
Мой вопрос, как я могу заменить компонент через PicoContainer
?
Могу ли я получить ссылку на DefaultPicoContainer
или MutablePicoContainer
как?
Или я могу просто бросить PicoContainer
в MutablePicoContainer
?
Примечание: используя "старую" версию, picocontainer 1.3
Спасибо за любые советы.
1 ответ
Решение
Я обнаружил, что это было так же просто, как бросить MutablePicoContainer
:
MutablePicoContainer picoContainer = (MutablePicoContainer) ApplicationManager.getApplication().getPicoContainer();
picoContainer.unregisterComponent("a.b.c");
picoContainer.registerComponentImplementation("a.b.c", MyComponent.class);
Я думаю, по умолчанию PicoContainer
был предоставлен как "контейнер только для чтения".