[Spring] 싱글톤 컨테이너

2024. 5. 1. 17:20·Spring

💡 싱글톤 패턴 이란?

 

객체를 하나만 생성 하여 관리 하는 패턴을 말한다.

객체의 생성을 private 생성자를 통해 막고, getInstance()를 통해 객체의 참조를 얻을 수 있다.

 

 

🙄 싱글톤 사용 이유

 

웹 어플리케이션의 경우 사용자의 요청이 매우 많다.

사용자가 요청 할때 마다 객체를 생성하게 되면 리소스가 낭비 되기 때문이다.

 

🤔 자바로 싱글톤을 구현시 문제점

 

자바만을 사용해 모든 객체를 싱글톤 패턴으로 만들게 되면 문제가 있다.

 

1. 싱글톤 객체.getInstance()를 통해 DI    ->   구체 클래스에 의존하게 되어 OCP, DIP를 위반한다.

2. 객체 마다 싱글톤 코드를 추가 해야한다.

3. private 생성자를 이용할 경우 자식 클래스의 생성이 어렵다.

 

 

 

위 설정 클래스를 통해 객체를 가져오면 싱글톤이 보장 되지 않는다.

memberService()   ->  memberRepository()  ->  new MemoryMemberRepository()  호출

orderService()  ->   memberRepository()  ->  new MemoryMemberRepository()  호출

 

자바만으론 싱글톤을 보장 하기 어렵다.

 

 

❓ 스프링은 어떻게 자바 코드를 싱글톤을 보장할까?

 

@Configuration

스프링은 위 경우 처럼 수동 빈 등록을 할 경우에 바이트 조작 라이브러리를 사용한다. 

 

설정정보에 @Configuration를 작성 하고 테스트 코드를 돌려보자

 

 

 

스프링은 CGLIB 라이브러리를 통해 싱글톤을 보장한다.

1. AppConfig를 상속받는 CGLIB 클래스를 만든다.

2. 빈을 등록할 때 컨테이너에 있는 빈이라면 재사용 한다.

( 스프링 컨테이너에 자기 자신을 등록하는데 부모타입인 AppConfig로 조회하여 보이는 것이다.) 

 

 

위 내용은 김영한님 스프링 핵심 원리 - 기본편을 참고하여 만들었습니다.

요약 한 내용이므로 자세한 내용은 강의 를 보시는 것을 추천합니다! 

 

스프링 핵심 원리 - 기본편

 

스프링 핵심 원리 - 기본편 | 김영한 - 인프런

김영한 | 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., 스프링 핵심 원리를 이해하고, 성장하는 백엔드 개발자가 되어보

www.inflearn.com

 

'Spring' 카테고리의 다른 글

[Spring] @ExceptionHandler API 에러 핸들링  (3) 2024.09.06
[Spring] 필터, 인터셉터 (Interceptor)  (0) 2024.09.05
[Spring] 쿠키, 세션 (Cookie, Session)  (0) 2024.09.04
[Spring] 빈 검증 ( Bean Validation )  (0) 2024.09.03
[Spring] 메시지, 검증 (Validation)  (4) 2024.09.02
'Spring' 카테고리의 다른 글
  • [Spring] 필터, 인터셉터 (Interceptor)
  • [Spring] 쿠키, 세션 (Cookie, Session)
  • [Spring] 빈 검증 ( Bean Validation )
  • [Spring] 메시지, 검증 (Validation)
희디비
희디비
  • 희디비
    희디비
    희디비
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Java
      • Spring
      • JPA
      • 백준
      • SWEA
      • Clone Coding
      • DB
      • 회고
      • 책
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 카테고리
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    티스토리챌린지
    오블완
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
희디비
[Spring] 싱글톤 컨테이너
상단으로

티스토리툴바