spring 手动销毁bean而不是ctx.close()

标签 spring javabeans destroy

是否可以告诉spring容器销毁特定的bean(原型(prototype))以节省内存?

我不想使用 ctx.close() 来查看此 bean 被销毁,而是在运行时使用。

最佳答案

如果我理解正确的话,你想删除运行时在 ctx 中定义的 bean,我会使用 BeanDefinitionRegistry 来完成此操作吗? BeanDefinitionRegistry 有一个方法removeBean() 以 bean 名称作为参数。

BeanDefinitionRegistry factory = 
   (BeanDefinitionRegistry) applicationCtx.getAutowireCapableBeanFactory();

然后

((DefaultListableBeanFactory) beanFactory).destroySingleton("myBean");

编辑

引用http://static.springsource.org/spring/docs/3.0.x/api/org/springframework/beans/factory/support/BeanDefinitionRegistry.html#removeBeanDefinition%28java.lang.String%29

关于spring 手动销毁bean而不是ctx.close(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16667957/

相关文章:

multithreading - 正确的线程销毁

java - 如何用angularjs显示 Controller 返回的jsp页面

java - 意外消息 - 没有使用连接拦截器注册端点

javascript - 使用 Backbone 的模型#destroy 后,如何摆脱附加到 View 的模型?

javabeans - JavaBeans 的设计如何与信息隐藏相结合?

java - 在JSP中使用JavaBean时出现异常

php - PHP 可以在 __destruct() 期间保存到文件吗

java - 使用单独的 application.properties 创建 Spring Boot 测试

java - 当有两个用@Qualifier定义的候选者时,Spring如何决定注入(inject)哪个bean?

java - JavaFX 中的自定义双向绑定(bind)