根据springsource
文档,singleton
scoped bean在每个
容器中只实例化一次。例如,我有一个单例作用域的<code>UserDetails<code>bean,它包含有关用户的信息<br>
在我的main()方法中:
ApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"Spring-Customer.xml"});
UserDetails ud1 = (UserDetails)context.getBean("userDetails");
custA.setAddress("Address set by ud1");
System.out.println("Address : " + ud1.getAddress());
UserDetails ud2 = (UserDetails)context.getBean("userDetails");
System.out.println("Address : " + ud2.getAddress());
输出将是
Address set by ud1
Address set by ud1
因为userDetails是一个单独的bean,所以< code>ud2的第二次检索将给出与ud1相同的结果。
现在这是我的问题:
对于我的Web应用程序,我在我的dispatcher-servlet.xml.
中有以下用户详细信息
bean
<bean id="userDetails" class="com.mukund.DTO.UserDetails" />
第一个问题:单例作用域是否也是 Web 应用程序的默认作用域?
如果是:
此 Bean 会自动连接到帐户服务和
客户服务
类。
如果客户端说 clientA
已在客户服务类中将用户的名字设置为“用户 A”,并且一段时间后它从帐户服务类中检索到第一个名称,
第二个问题:它得到的是以“UserA”作为名字的UserDetails的同一个实例吗?< br >第三个问题:同时,如果另一个客户端(比如< code>clientB)试图获取AccountService类中的第一个名称,它会获取“UserA”吗?< br >第四个问题:clientA、clientB和其他人会共享同一个UserDetails实例吗?如果是:选择原型、请求或会话的范围。
我希望你能理解我的观点。请向我解释有关web应用程序的SpringBean作用域。
谢啦
默认情况下,spring beans的作用域是singleton,这意味着每个容器有一个实例。但这并不意味着所有请求都使用同一个实例。
它的工作原理是这样的。
客户端A请求bean A,容器将查找该bean A的实例,如果实例不可用,它将创建一个实例,然后将其提供给客户端A。
但是,如果豆A被另一个客户端B使用,那么客户端A必须等到客户端B释放豆A。
是的,单例是Web应用程序的默认范围。因此,您可以在所有服务(以及所有用户)中获得相同的UserMore实例。
什么样的范围适合你取决于你到底想要什么。您真的想将数据传输对象注入到服务中吗?对象应该存在多久?
问题内容: 是否在同一Web应用程序的实例之间共享Java静态变量? 如果Web应用程序使用 MyClass 并且该应用程序的多个实例在Web服务器上运行, myStaticObject 是否被 多次 初始化? 问题答案: 通常,是的。大多数容器将为每个Web应用程序提供单独的类加载器。当多个应用程序使用该类时,这将导致该类被多次加载,从而导致该静态变量的多个实例。 陈述Java语言规范以供参考:
问题内容: 场景:我们有一个在Websphere中运行的Spring托管的Web应用程序。(Spring 3.0.x,WAS 7)Webapp通过Spring的Web应用程序利用Websphere的工作管理器(配置为10的线程池)以执行计算密集型db读取操作。因此,基本上,有一个请求来生成10个不同的文件。要生成文档,只需db读取即可收集/处理数据。因此,我们基本上产生了10个线程来处理10个文档
本章将教您如何使用Maven管理基于Web的项目。 在这里,您将学习如何创建/构建/部署和运行Web应用程序。 创建Web应用程序 要创建一个简单的Java Web应用程序,我们将使用maven-archetype-webapp插件。 所以,让我们打开命令控制台,转到C:\MVN目录并执行以下mvn命令。 C:\MVN>mvn archetype:generate -DgroupId = com
我在web中配置了spring根web上下文。xml文件。我也有几个与此父项相关的子上下文。所有子上下文都是手动创建的: 我想在这个子上下文中管理会话和请求范围的bean。 如何正确创建和配置子上下文,使其能够处理web应用程序范围? 现在我在尝试自动装配会话范围的bean时出现以下错误(显然):
问题内容: 我是Java的新手,我正尝试使用Firebase托管Java Web应用程序。 问题 我的问题似乎是我的文件不存在于我的Java文件结构中。因此,我不能在文件中“指向它” 。 题 关于如何托管Java Web应用程序,我不了解什么? 部署Java Web应用程序时是否有文件(Firebase显然需要)? 如何成功托管Java Web应用程序? Firebase托管设置说明: 设置与安装
问题内容: 与在内置的Web服务器上运行独立的Java应用程序并在反向代理后面运行相比,构建一个小型的Java Web应用程序以在Servlet容器(如Tomcat)中运行的优势是什么? 我已经使用Java大约一年了。我注意到启动Tomcat需要时间,并且由于类加载器问题,并非总是可以进行热重新部署。Servlet API在我看来有些令人费解,尤其是从配置和RESTful设计的角度来看(实际上并没