Java/Spring

Spring Bean(빈)의 범위 싱글톤, 프로토타입

상상모음 2025. 4. 2. 16:07

싱글톤

스프링 컨테이너에서 생성된 빈(Bean) 객체의 경우 동일한 타입에 대해서는 기복적으로 한 개만 생성이 되며, getBean() 메서드로 호출이 될 때 동일한 객체가 반환된다.

빈 객체를 참조하는거다. 

 

 

프로토타입

싱글톤 범위의 반대의 개념도 있는데 이를 프로토타입 범위라고한다.

프로토타입의경우 개발자는 별도로 설정을 해줘야 하는데

스프링 설정파일에서 빈( Bean) 객체를 정의할 때 scope속성을 명시해주면 된다.  

<bean id="injectionBean" class="scope.ex.InjectionBean" />
//이것은 주입하는 객체 


//주입하는 객체를 이용해서 의존하는 객체 작성
<bean id="dependencyBean" class="scope.ex.DependencyBean" scope="prototype">
<constructor-arg ref="injectionBean" />
<property name="injectionBean" ref="injectionBean" />
</bean>

getBean으로 객체를 참조하는 것이 아니라 새로운 객체를 계속해서 생성하면서 객체를 만들어 나가는 방법이다.

즉, 싱글톤처럼 같은메모리주소의 공간에서 참조하는 것이 아닌 새로운 주소를 가진 객체를 생성하는것.

프로토타입으로 객체를 만드는것은 그리 흔치 않다 싱글톤이 디폴트(기본).