2013-09-26 4 views
1

다음 스프링 구성을 가지고 있습니다.스프링 싱글 톤 클래스 인스턴스가 생성 되었습니까?

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

모두 bean 정의는 싱글 있지만 그래 우리는 여전히 상황에서 동일한 개체의 두 인스턴스가있는 경우? 위의 구성에 대해 서로 다른 ID를 가진 두 인스턴스를 생성 봄 것이다. 그것은 싱글 톤이 아니라는 것을 의미합니까?

답변

2

예. 두 개의 별도 인스턴스가 생성됩니다. 네, 이것은 고전적인 의미에서 더 이상 싱글 톤이 아닙니다 (JVM 당 하나의 인스턴스) - (존재했다면) 그러나 생성 된 빈 (각각)은 싱글 톤 범위 (스프링 의미)를가집니다. 주어진 클래스의 객체가 항상 싱글 톤 (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

예, 개체는 더 이상 Singleton이 아닙니다.

기본적으로 모든 스프링 삽입 빈은 Singleton이지만, 동일한 빈을 두 개의 다른 ids으로 두 번 정의하면 스프링은 two 인스턴스를 생성합니다.