Spring单例类实例创建了吗?

时间:2013-09-26 11:01:54

标签: java spring

我有以下弹簧配置。

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

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

2 个答案:

答案 0 :(得分:2)

是。将创建两个单独的实例。是的,这不再是经典意义上的单例(每个JVM一个实例) - (如果有的话),但是创建的bean(每个都有)具有单一范围(在Spring意义上)。如果您确实想确保给定类的对象始终是单例(每个JVM只有一个实例),请参阅Correct way of making a singleton a Spring bean

但问题是你真的需要'真正的单身人士'吗?!

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

答案 1 :(得分:1)

是的,该对象不再是Singleton

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