当前位置: 首页 > 知识库问答 >
问题:

Java Spring bean作用域:单例与应用程序

闾丘树
2023-03-14

有人能解释这两个SpringBean作用域之间的区别吗?我熟悉单例模式。

这是唯一的区别吗?使用application scope,您可以在Spring容器中拥有一个beans列表。

此外,您是否能够在一个Spring容器中运行多个Web服务器?如果是,那将是使用应用程序范围而不是单例范围的原因,因为否则bean将在两个服务器上共享。

共有2个答案

郑功
2023-03-14

在应用程序范围中,容器为每个web应用程序运行时创建一个实例。应用程序范围几乎类似于单例范围。所以,区别在于

应用程序作用域bean是每个ServletContext的单例,而单例作用域bean则是每个ApplicationContext的单例。这意味着单个应用程序可以有多个应用程序上下文。

单例作用域BEAN

//load the spring configuration file
ClassPathXmlApplicationContext context =
        new ClassPathXmlApplicationContext("context.xml");

// retrieve bean from spring container
MyBean myBean = context.getBean("myBean", MyBean.class);
MyBean myBean2 = context.getBean("myBean", MyBean.class);

// myBean == myBean2 - output is true.
梁丘书
2023-03-14

文件对此进行了解释:

这有点类似于Spring单例bean,但在两个重要方面有所不同:它是每个ServletContext的单例,而不是每个Spring“ApplicationContext”(或在任何给定的web应用程序中可能有多个),并且它实际上是公开的,因此作为ServletContext属性可见

 类似资料:
  • 假设有两个类ClassA和ClassB。假设ClassB依赖于ClassA。在配置文件中,如果我们将ClassA的作用域定义为singleton,而将ClassB的作用域定义为Prototype,那么每次创建ClassA的bean实例时ClassB的实例会发生什么?每次返回ClassA实例时,会返回相同的ClassB实例还是创建新实例? 谢谢!!!

  • 我试图学习Guice,但下面的场景似乎很难。假设我有A、B和C类。我应该能够做到以下几点(注意,这个例子在某种程度上简化为实际情况): A是全球单身人士 当B创建C时,C的依赖项B必须是相同的实例,即从C的角度来看,B是单例的。 我尝试过创建儿童注射器: } 但是Guice给出了B已经绑定的错误(MainModule中提供了方法)。因此,我需要覆盖MainModule的B绑定,但这似乎不可能使用子

  • 本文向大家介绍JS 作用域与作用域链详解,包括了JS 作用域与作用域链详解的使用技巧和注意事项,需要的朋友参考一下 (1)作用域 一个变量的作用域(scope)是程序源代码中定义的这个变量的区域。 1. 在JS中使用的是词法作用域(lexical scope) 不在任何函数内声明的变量(函数内省略var的也算全局)称作全局变量(global scope) 在函数内声明的变量具有函数作用域(func

  • 问题内容: 回顾这篇文章,列举了使用单例的几个问题, 并看到了使用单例模式的Android应用程序的几个示例,我想知道使用单例而不是通过全局应用程序状态共享的单个实例(将android.os.Application子类化并获取它)是否是一个好主意。通过context.getApplication())。 两种机制都有哪些优点/缺点? 老实说,我希望在此后的Singleton模式与Web应用程序中得

  • 因此,在android中,我想使我的应用程序类成为单例。 这样做: 不行。在运行时抛出以下错误: 这样做也是不可能的: 因此,我想使用而不是。 还有一个解释:我的应用程序中有类,例如,SharedReference单例,它是用上下文初始化的,作为单例,不能有参数。

  • 本文向大家介绍JavaScript进阶(二)词法作用域与作用域链实例分析,包括了JavaScript进阶(二)词法作用域与作用域链实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JavaScript词法作用域与作用域链。分享给大家供大家参考,具体如下: 一、作用域 域表示的就是范围,即作用域,就是一个名字在什么地方可以使用,什么时候不能使用。想了解更多关于作用域的问题推荐阅读《你不