[Spring 스프링 기본] 싱글톤 컨테이너

2023. 11. 28. 16:10·[ Development ]/[ Back-end ] Spring 기본

순수 의존성 주입 컨테이너 - 클라이언트 요청마다 생성하는 문제 - 메모리 낭비

객체 하나만 생성하고 공유하도록 설계하여 해결
= 싱글톤 패턴

싱글톤 패턴
-> 클래스의 인스턴스가 단 하나만 생성되도록 보장하는 디자인 패턴
-> private 접근지정자로 설정 - new 연산자를 활용한 (동적할당) 외부에서의 접근, 객체 인스턴스 추가 생성을 방어함

private 접근지정자로 선언되었으므로 getter 메서드를 통해서만 조회 가능하고 해당 메서드 호출하면 항상 같은 인스턴스를 반환함

싱글톤 패턴이 언제나 좋기만 한가? - 당연히 NO

구현하는 코드가 길어짐
클라이언트가 구체 클래스에 의존하게 되는데 DIP 위반, OCP 위반
내부 속성 변경 및 초기화 難 (어려울 난)
Private 접근지정자로 인해 자식 클래스 생성이 어려우니 유연성 감소

스프링 컨테이너는 싱글톤 패턴 적용 없이도 객체 인스턴스를 싱글톤 패턴으로 관리
싱글톤 레지스트리 = 싱글톤 객체 생성 및 관리 기능

장점
싱글톤 패턴을 위한 코드 불필요
자유롭게 싱글톤 사용 가능 (From DIP, OCP, private)

단점
싱글톤 패턴의 객체는 상태 유지하게 설계하는 것이 아닌 무상태로 설계해야함
- 특정 클라이언트 의존적 필드 포함 x
- 특정 클라이언트가 값 변경 가능한 필드 포함 X
- read 모드
- 공유 불가한 값인 지역변수, 파라미터 등을 사용











728x90

'[ Development ] > [ Back-end ] Spring 기본' 카테고리의 다른 글

[Spring/Swagger] 스프링부트에서 Swagger 사용하기 :: springdoc-openapi-ui 라이브러리  (0) 2024.02.15
[Spring 스프링 기본] 의존관계 자동 주입  (0) 2023.12.26
[Spring 스프링 기본] 컴포넌트 스캔  (1) 2023.12.05
[Spring 스프링 기본] 스프링 컨테이너와 스프링 빈  (1) 2023.11.21
[Spring 스프링 기본] 객체 지향 원리 적용  (1) 2023.11.14
[Spring 스프링 기본] 2. 핵심 원리 이해 1 - 예제 만들기  (0) 2023.11.07
[Spring 스프링 기본] 1. 객체지향설계와 스프링  (1) 2023.10.22
'[ Development ]/[ Back-end ] Spring 기본' 카테고리의 다른 글
  • [Spring 스프링 기본] 의존관계 자동 주입
  • [Spring 스프링 기본] 컴포넌트 스캔
  • [Spring 스프링 기본] 스프링 컨테이너와 스프링 빈
  • [Spring 스프링 기본] 객체 지향 원리 적용
dev charlotte
dev charlotte
주 - 컴퓨터공학 / 복수 - 산업 보안
    250x250
  • dev charlotte
    int main() {
    dev charlotte
  • 전체
    오늘
    어제
    • 분류 전체보기
      • [ Laboratory ]
        • Paper review
        • Advanced Operating System
        • System Software & Storage
        • Lab etc
      • [ Computer Science ]
        • Algorithm_C++
        • Operating System
        • Information Retrieval
        • Database_sql
        • SW Engineering
        • Computer Network
        • JavaScript
        • Python
        • Data Structure
        • CS study
        • Distributed systems
      • [ Computer Security ]
        • Convergence Security
        • Web Security
        • PIMS
        • Network Security
        • Digital Finance
      • [ Artificial Intelligence ]
        • Trend
        • Seminar
      • [ 미래, 같이, LG ]
      • [ Development ]
        • [ Front-end ]
        • [ Back-end ] Spring 기본
        • [ Back-end ] Node.js
      • etc
        • 현대오토에버 스마트 모빌리티 공학 체험 교육
      • It's me
  • 블로그 메뉴

    • 링크

      • GitHub
    • 공지사항

    • 인기 글

    • 태그

      스마트모빌리티공학체험교육
      프로그래머스 c++
      현대오토에버 스마트모빌리티
      공대생 대외활동
      소프트웨어 공학
      SQL
      코딩 인강
      코드잇
      ssafy 13기
      hotstorage
      SSAFY
      현대오토에버
      프로그래머스
      싸피 13기
      코딩 교육
      MySQL
      프로그래밍 언어론
      오블완
      spdk
      현대오토에버 스마트 모빌리티
      프로그래머스 입문
      프로그래머스 코테
      싸피
      백준
      티스토리챌린지
      자바스크립트
      비전공자 코딩
      데이터베이스
      대학생 대외활동
      SQL 쿼리
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.4
    dev charlotte
    [Spring 스프링 기본] 싱글톤 컨테이너
    상단으로

    티스토리툴바