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

前端之家收集整理的这篇文章主要介绍了java – Spring Singleton Scope是如何收集垃圾的?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我是 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已缓存在应用程序上下文中,所以在销毁应用程序上下文之前,它永远不会有资格进行垃圾回收.

猜你在找的Java相关文章