加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – Spring Singleton Scope是如何收集垃圾的?

发布时间:2020-12-15 03:09:46 所属栏目:Java 来源:网络整理
导读:我是 Spring框架的新手.我对 Spring中的singleton概念感到困惑,它是垃圾收集.我已经阅读了很多问题和文章来获得我的问题的答案,即Spring Singleton范围是如何被垃圾收集的.我只得到了关于原型范围垃圾收集的答案,但关于单例范围的文章对我来说并不清楚.有人
我是 Spring框架的新手.我对 Spring中的singleton概念感到困惑,它是垃圾收集.我已经阅读了很多问题和文章来获得我的问题的答案,即Spring Singleton范围是如何被垃圾收集的.我只得到了关于原型范围垃圾收集的答案,但关于单例范围的文章对我来说并不清楚.有人可以提供有关此问题的详细信息.

解决方法

在Spring,你写的大多数课程都是单身.这意味着只创建了这些类的一个实例.这些类是在Spring容器启动时创建的,并在Spring容器停止时被销毁.

Spring单例对象与简单Java对象的不同之处在于容器维护对它们的引用,并且它们可以随时在代码中的任何位置使用.

我将举例说明使用Spring容器来说明我的意思.在编写Spring应用程序时,这不是您应该如何正常执行此操作,这只是一个示例.

@Component
public class ExampleClass implements ApplicationContextAware {
    /* 
     * The ApplicationContextAware interface is a special interface that allows 
     * a class to hook into Spring's Application Context. It should not be used all
     * over the place,because Spring provides better ways to get at your beans
     */
    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        MyBean bean = applicationContext.getBean("MyBean");
    }
}

上面的代码所做的是对Spring说“我想要在容器启动时发现的MyBean实例”(Classpath Scanning). Spring应该已经创建了这个类的(代理)实例,可供您使用.

从Spring Documentation开始

The Spring IoC container creates exactly one instance of the object defined by that bean definition. This single instance is stored in a cache of such singleton beans,and all subsequent requests and references for that named bean return the cached object.

因为该bean已缓存在应用程序上下文中,所以在销毁应用程序上下文之前,它永远不会有资格进行垃圾回收.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读