问题描述
我想开发一个模块控制系统,这样每个spring bean都可以由我自己的LifeCycle Controller管理.
I want to develop a module control system so that every spring bean can be managed by my own LifeCycle Controller.
但我不知道如何从 ApplicationContext 中删除一个单例 spring bean.
But I can not figure out how can I remove a singleton spring bean out of ApplicationContext.
这可能是一个有趣的问题,你能帮我解决吗?
That may be an interesting problem , can you help me to resolve ?
推荐答案
您可以尝试删除 bean 定义.获取 BeanDefinitionRegistry
并调用 removeDefinition(..)
You can try removing the bean definition. Get the BeanDefinitionRegistry
and call removeDefinition(..)
这取决于您创建应用程序的方式,但例如在 Web 应用程序中,您可以通过以下方式获取定义注册表:
It depends on the way you create your application, but for example in web application you can get the definition registry by:
BeanDefinitionRegistry factory =
(BeanDefinitionRegistry) applicationCtx.getAutowireCapableBeanFactory();
(bean 工厂实现了 BeanDefinitionRegistry
).
(the bean factory implements BeanDefinitionRegistry
).
我不知道 bean 实例是否也会被删除.试试看.
I don't know if the bean instance will be removed as well. Give it a try.
这篇关于如何从 ApplicationContext 中删除单例 spring bean?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!