当前位置: 首页 > 面试题库 >

spring默认范围是单身还是没有?

钮边浩
2023-03-14
问题内容

能否解释一下为什么Spring为下面所示的bean配置创建两个对象,因为默认情况下spring的默认作用域是singleton?

Spring配置在这里:

<bean id="customer" class="jp.ne.goo.beans.Customer"> 
    <property name="custno" value="100"></property>
    <property name="custName" value="rajasekhar"> </property>
</bean>
<bean id="customer2" class="jp.ne.goo.beans.Customer"> 
    <property name="custno" value="200"></property> 
    <property name="custName" value="siva"></property> 
</bean>

问题答案:

Spring的默认范围是单例。仅仅是你对成为单身人士的含义的想法与Spring如何定义单身人士不匹配。

如果你告诉Spring制作两个具有不同ID和相同类的独立bean,那么你将获得两个独立bean,每个bean具有单例作用域。所有单例作用域的意思是,当你引用具有相同ID的对象时,你将获得相同的bean实例。

仅管理一个singleton bean的一个共享实例,所有对具有与该bean定义相匹配的id的bean的所有请求都将导致该特定的bean实例由Spring容器返回。

单例作用域意味着使用相同的ID检索相同的bean,即全部。测试没有两个ID引用相同的类会妨碍将地图用作Bean,并且通过使用BeanFactories代理事物会变得很复杂。对于Spring来说,这将涉及很多工作,却收效甚微,相反,它让用户知道他们在做什么。

为同一个bean定义两个名称的方法是使用别名:

在bean定义本身中,可以使用由id属性指定的最多一个名称和name属性中任意数量的其他名称的组合来为bean提供多个名称。这些名称可以是同一bean的等效别名,并且在某些情况下很有用,例如允许应用程序中的每个组件通过使用特定于该组件本身的bean名称来引用公共依赖关系。

但是,在实际定义bean的地方指定所有别名并不总是足够的。有时需要为在别处定义的bean引入别名。在大型系统中通常是这种情况,在大型系统中,配置在每个子系统之间分配,每个子系统都有自己的对象定义集。在基于XML的配置元数据中,你可以使用元素来完成此任务。

因此,如果你在Bean配置中添加名称:

<bean id="customer" name="customer2" 
    class="jp.ne.goo.beans.Customer">
</bean>

或为其他地方定义的bean创建别名:

<alias name="customer" alias="customer2"/>

然后“ customer”和“ customer2”将引用相同的bean实例。



 类似资料:
  • 我有一辆车,它有一个依赖项:

  • 问题内容: 如果输入: 默认范围是什么? 上市?受保护?私人的? 问题答案: 默认范围是package-private。同一包中的所有类都可以访问方法/字段/类。私有包比受保护的范围和公共作用域严格,但比私有作用域更宽松。 详细信息: http //docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html http://mindp

  • 问题内容: AngularJS指令的默认作用域值是什么? 当然,它不是孤立的范围。这是对还是错。 我找不到有关它的任何文档。 问题答案: “请注意,默认情况下,伪指令不会创建新的作用域-即,默认值为” 从理解范围。 使用指令中的scope选项,您可以: 创建一个原型继承的子范围 创建一个独立的作用域,然后您可以将某些属性绑定到父作用域。 决定不创建新的作用域,并使用父级(默认)。

  • OWL:EquivalentClass的域和范围提出了一些我无法找到答案的问题。 首先,在OWL本身中,OWL:equivalentClass的域和范围被设置为rdfs:class。这个领域和范围似乎与规范(http://www.w3.org/tr/owl-ref/#equivalentclass-def)中给出的定义有些冲突,其中提到: “这样一个类公理[即OWL:EquivalentClass

  • 我正在Spring Boot应用程序中学习Spring Security性,我试图了解默认情况下使用Spring Security性的身份验证方式。我知道Spring Security默认情况下使用基于表单的身份验证,但我使用基本身份验证对Postman进行了测试,结果正常。 我有一个非常简单的Spring Boot应用程序。 Rest控制器: 我在pom中添加了Spring Security依赖

  • 我正在处理一个使用Spring批处理的项目。在本项目中,我使用Spring批处理后期绑定,其中我使用JobParameters注入了一个参数(将用作SQL读取器查询的条件的字符串)。目前,我正在使用进行后期绑定,所有操作都非常正常。 这里我要问的是何时使用以及何时使用。我已经阅读了Spring批处理参考文件,并在谷歌上搜索了StepScope和jobscope。我得到的只是: a.StepScop