Bean definition

빈이 존재할 수 있는 범위를 의미합니다.

 

 

  • Spring Framework 는 6개의 범위를 지원하며, 그 중 4개는 ApplicationContext 를 사용하는 경우에만 사용할 수 있습니다.
  • bean 은 여려가지 범위 중에서 하나에 배치될 수 있도록 정의할 수 있습니다.
  • 사용자 정의 범위를 생성할 수 있습니다.

 

싱글톤 스코프

클래스 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴

 

  • 스프링 컨테이너의 시작과 함께 생성되어서 스프링 컨테이너가 종료될때까지 유지됩니다.
  • 싱글톤 빈의 하나의 공유 인스턴스만 관리하게 됩니다.
  • [해당 bean Definition 과 일치하는 ID] or [ID 를 가진 빈] 에 대한 모든 요청은 스프링 컨테이너에서 해당 특정 빈 인스턴스를 반환
  • 스프링 컨테이너 종료시 소멸 메서드도 자동으로 실행됨

 

싱글톤 특징

  • 해당 빈의 인스턴스를 오직 하나만 생성해서 사용
  • 인스턴스는 싱글톤 빈의 캐시에 저장됨
  • 정해진 빈에 대한 모든 요청과 참조는 캐시된 개체를 반환 ( 즉, 여러번 호출해도 모두 같은 인스턴스 참조 주소값 가짐 )

 

싱글톤 패턴의 문제점

1) 구현하는 코드 자체가 많아짐

2) 의존관계상 클라이언트 구체 클래스에 의존

3) 지정해서 가져오기 때문에 테스트가 어려움

4) private 생성자를 사용해 자식 클래스를 만들기 때문에 유연성이 떨어짐

5) 싱글톤 빈은 기본적으로 애플리케이션 구동 시 생성되므로 빈이 많을수록 구동 시간이 증가됨

 

 

싱글톤 패턴 문제와 싱글톤 컨테이너

위의 싱글톤 패턴의 문제점은 싱글톤 컨테이너를 사용함으로써 해결이 가능합니다.

 

  • 스프링 컨테이너는 싱글톤 컨테이너 역할을 합니다.
  • 싱글톤 객체로 생성하고 관리하는 기능을 싱글톤 레지스트리라고 합니다.
  • 스프링 컨테이너의 위 기능 덕분에 싱글턴 패턴의 모든 단점을 해결하며 객체를 싱글톤으로 유지할 수 있습니다.

 

'스터디' 카테고리의 다른 글

멀티 쓰레드  (0) 2022.11.24
서블릿  (1) 2022.11.22
스프링 컨테이너  (0) 2022.08.11
UML 작성법  (0) 2022.08.10
AOP - 관점 지향 프로그래밍  (0) 2022.08.09

+ Recent posts