2013-04-11 72 views
1

在下面的例子中,我不是作爲非常清楚發生了什麼春範圍爲單工作

<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> 

我看到三角對象的兩個實例。 Spring如何處理這個問題? 我知道春天正在使用反射。使用singleton的意義在於它的行爲如同原型(給我兩個Triangle對象)。如果範圍的概念在於同一個id(三角形或三角形1),那麼它應該被定義爲每個spring容器每個classloader每個jvm的單個對象,而不是每個spring的單個對象每個jvm的每個classloader容器

回答

1

定義bean作爲單例並不意味着它只會是該類的一個實例。單例作用域適用於bean定義,所以你將有兩個三角形單體bean。

+0

查看更多的信息,以便在Spring的情況下獨居它是每個春天配置文件中每個JVM定義每spring容器的id單個對象。 – user2271410 2013-04-11 17:35:22

+0

看起來像Spring內部使用Map作爲ID和Object作爲值?對於不同的ID我得到不同的物體。 – user2271410 2013-04-11 17:37:37

+0

是的,每個bean定義pr應用程序上下文的單例。 – NilsH 2013-04-11 17:43:19