Spring [핵심] 싱글톤 컨테이너

신재원·2023년 1월 8일
0

Spring 핵심

목록 보기
13/19

스프링이 없는 DI 컨테이너

  • 조회(호출) 할때마다 객체를 생성

  • 트래픽이 100이 나오면 초당 100개 객체가 생성되고 소멸 -> 메모리 낭비가 심함

해결 : 해당 객체가 딱 1개만 생성되고, 공유하도록 설계하면된다 -> 싱글톤 패턴

싱글톤 패턴

  • same : 대상의 "주소값"을 비교
  • equal : 대상의 "내용"을 비교
    • a = "123"; , b = "123";
      • a !=b 이고 , a is equal to b 이다.

싱글톤 패턴의 문제점

- 구현하는 코드 자체가 많이 들어간다
- DIP를 위반한다
- OCP 위반을 하기 쉽다 (유연성이 떨어진다)
- 테스트 하기 어렵다

싱글톤 컨테이너

  • 스프링 컨테이너는 싱글톤 패턴을 적용 X -> 객체 인스턴스를 싱글톤으로 관리해줌

싱글톤 방식의 주의점

  • 여러 클라이언트에서 하나의 같은 객체 인스턴스를 공유하기 때문에 싱글톤 객체는 상태를 유지하게 설계하면 안된다
  • 무상태로 설계해야 한다.
    • 가급적 읽기만 가능해야 한다.

@Configuration과 싱글톤

  • 스프링은 어떻게든 싱글톤(객체 하나만 호출(중복X))을 지켜준다.
  • @Configuration 어노테이션 (스프링 설정 정보에 "무조건"사용)
    • 임의의 다른 클래스가 싱글톤이 되도록 보장한다

0개의 댓글