Я хочу разработать систему управления модулями , чтобы каждый компонент Spring мог управляться моим собственным контроллером LifeCycle.
Но я не могу понять, как удалить одноэлементный компонент Spring из ApplicationContext.
Это может быть интересной проблемой, не могли бы вы помочь мне решить?
Вы можете попробовать удалить определение компонента. Получите BeanDefinitionRegistry
и позвоните removeDefinition(..)
Это зависит от того, как вы создаете свое приложение, но, например, в веб-приложении вы можете получить реестр определений:
BeanDefinitionRegistry factory =
(BeanDefinitionRegistry) applicationCtx.getAutowireCapableBeanFactory();
(фабрика бобов реализует BeanDefinitionRegistry
).
Я не знаю, будет ли удален также экземпляр компонента. Попробуйте.