Spring Scope作为单例工作

时间:2013-04-11 17:24:00

标签: spring scope

在下面的例子中,我不太清楚发生了什么

 <bean id="triangle" class="com.mkyong.Triangle" scope="singleton">
<property name ="pt1" ref ="point1" />
<property name ="pt2" ref ="point2"/>
<property name ="pt3" ref ="point3"/>
</bean>

<bean id="triangle1" class="com.mkyong.Triangle" scope="singleton">
<property name ="pt1" ref ="point1" />
<property name ="pt2" ref ="point2"/>
<property name ="pt3" ref ="point3"/>
</bean>

我看到了Triangle Object的两个实例。内部Spring怎么处理这个? 我知道Spring正在使用Reflection。使用singleton有什么意义,因为它的行为就像原型(给我两个Triangle对象)。如果范围的概念属于同一个id(三角形或三角形1),那么它应该被定义为每个jvm每个类加载器每个弹簧容器的每个id的单个对象,而不是每个jvm每个类加载器的每个弹簧容器的单个对象

2 个答案:

答案 0 :(得分:1)

将bean定义为singleton并不意味着它只是该类的一个实例。单例范围适用于bean定义,因此您将有两个类型为triangle的单例bean。

答案 1 :(得分:0)

对于triangle1将有一个实例,对于triangle2将有另一个实例。

  

当bean是单例时,只有一个bean的共享实例   管理,以及所有与id或id匹配的bean的请求   bean定义将导致一个特定的bean实例   由Spring容器返回。

您可以在http://static.springsource.org/spring/docs/3.0.0.M3/reference/html/ch04s04.html#beans-factory-scopes-singleton

查看更多信息