[SEB BE]Section 2. 빈 스코프 - 싱글톤 스코프

박두팔이·2023년 2월 6일
0

빈 스코프 종류

💡 빈 스코프란? 빈이 존재할 수 있는 범위를 의미한다.

  • Spring Framework는 6개의 범위를 지원하며, 그 중 4개는 ApplicationContext를 사용하는 경우에만 사용할 수 있다.

싱글톤(singleton) 스코프

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

  • 스프링 컨테이너의 기본값은 싱글톤이다.
  • 스프링 컨테이너와 함께 생성 -> 스프링 컨테이너가 종료될 때 까지 유지된다. (종료 시 소멸메서드 자동실행)
  • 단일 인스턴스는 싱글톤 빈의 캐시에 저장된다
  • private생성자를 사용해 외부에서 new를 사용하지 못하도록 해야한다.
  • bean definition와 일치하는 ID를 가진 빈을 요청하면 스프링컨테이너에서 해당 인스턴스를 반환해준다.
  • 싱글톤 스코프의 스프링 빈은 여러번 호출해도 모두 같은 인스턴스 참조 주소값을 가진다.

싱글톤 패턴의 단점

  1. 구현코드가 많다.
  2. 클라이언트가 구체 클래스에 의존한다.(강한결합)
  3. 테스트의 어려움
  4. private 생성자를 사용하기 때문에 자식클래스를 만들 수 없음
  5. 속성이 공유되는 단점

    1️⃣ 멀티쓰레드 환경일 때 여러 쓰레드에 의해서 싱글톤 객체의 속성이 바뀔 수 있다.

    2️⃣ 예를들어, A쓰레드에서 속성값을 x로 바꾸고 출력할 때 B쓰레드가 속성값을 y로 바꾼다면 우리가 최종적으로 원했던 A의 값이 출력되지 않음

    3️⃣ 따라서 읽기만 가능

  6. 애플리케이션 초기 구동 시 인스턴스가 생성되기때문에 싱글톤 빈이 많으면 구동시간이 증가한다.
profile
기억을 위한 기록 :>

0개의 댓글