Как заменить компонент через экземпляр 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 был предоставлен как "контейнер только для чтения".

Другие вопросы по тегам