Java Spring重新创建特定的Bean

Java Spring重新创建特定的Bean,第1张

Java Spring重新创建特定的Bean

在DefaultListableBeanFactory中,您具有公共方法destroySingleton(“
beanName”),因此可以使用它,但是您必须知道,如果您自动装配了bean,它将保留最初自动装配的对象的相同实例。可以尝试这样的事情:

@RestControllerpublic class MyRestController  {        @Autowired        SampleBean sampleBean;        @Autowired        ApplicationContext context;        @Autowired        DefaultListableBeanFactory beanFactory;        @RequestMapping(value = "/ ")        @ResponseBody        public String showBean() throws Exception { SampleBean contextBean = (SampleBean) context.getBean("sampleBean"); beanFactory.destroySingleton("sampleBean"); return "Compare beans    " + sampleBean + "=="    + contextBean;    //while sampleBean stays the same contextBean gets recreated in the context }    }

它不是很漂亮,但显示了如何实现它。如果要处理的是控制器而不是组件类,则可以在方法参数中进行注入,并且它也可以工作,因为直到在方法内部需要时才重新创建Bean,至少看起来是这样。有趣的问题是,除了首先将其自动连线到的对象外,还有谁还引用了旧Bean,因为已将其从上下文中删除,所以我想知道它是否仍然存在,或者是否在控制器中释放了该对象而进行了垃圾收集上面的内容,如果上下文中的某些其他对象引用了它,则上面的内容会引起问题。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4957797.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-13
下一篇 2022-11-13

发表评论

登录后才能评论

评论列表(0条)

保存