1

我有以下弹簧配置。

<bean id="abcService1" class="com.service.ABCServiceImpl" />
<bean id="abcService2" class="com.service.ABCServiceImpl" />

spring 会为上述配置创建 2 个具有不同 id 的实例吗?如果是,那么尽管两个 bean 定义都是单例的,但我们仍然在上下文中有 2 个相同对象的实例。这是否意味着它不再是单例了?

4

2 回答 2

2

是的。将创建两个单独的实例。是的,这不再是经典意义上的单例(每个 JVM 一个实例)-(如果曾经是的话),但是创建的 bean(它们中的每一个)具有单例范围(在 Spring 的含义中)。如果您真的想确保给定类的对象将始终是单例(每个 JVM 只有一个实例),请参阅将单例制作为 Spring bean 的正确方法

但问题是你是否真的需要“真正的单身人士”?!

http://docs.spring.io/spring/docs/3.2.1.RELEASE/spring-framework-reference/html/beans.html#beans-factory-scopes

于 2013-09-26T11:11:53.090 回答
1

是的,对象将不再是Singleton

默认情况下,所有 Spring 注入的 bean 都是Singleton,但如果你用两个不同的方式定义同一个 bean 两次,ids那么 Spring 将创建two实例。

于 2013-09-26T11:08:32.873 回答