스프링 Ioc컨테이너 빈의 스코프

최기곤·2021년 1월 13일
0

스프링프레임워크

목록 보기
3/8

빈의 스코프

스프링에서는 빈의 스코프를 싱글톤, 프로토 타입 등으로 설정이가능하며 그에 따라 속해있는 빈들이 상태가 변경될 수 있다.

싱글톤

  • 빈을 등록하면 기본값이 싱글톤이므로 싱글톤으로 등록이된다.

문제점
싱글톤 객체를 사용하게 되면 공유되므로 멀티쓰레드 환경에서 쓰레드세이프하지 않다.

프로토타입

@Component @Scope("prototype")
public class MyProtoBean {

}
  • Proto를 @Scope를 통해 prototype으로 지정한다.
  • 서로 다른 인스턴스가 생성된다.

프로토타입 사용 시 주의점

Singleton Bean에 PrototypeBean을 주입하게되면 어떻게 될까?

  • PrototypeBean임에도 불구하고 같은 인스턴스가 주입된다.

해결방법

@Component
@Scope(value = "prototype", proxyMode = ScopedProxyMode.TARGET_CLASS)
public class MyProtoBean {
}
  • 위와 같이 하게되면 Singleton객체가 Prototype객체를 직접 참조하는게 아닌 Proxy를 통해 참조하게 되기 때문에 다른 빈이 생성되게 된다.
profile
놀면서 일하고 일하면서 놀고~ 해삐~

0개의 댓글