1

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

我不想使用 ctx.close() 来看到这个 bean 被破坏,而是在运行时。

4

1 回答 1

1

如果我理解正确,您想删除在运行时在 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

于 2013-05-21T12:15:44.893 回答