본문 바로가기

Development/Spring Boot

[Spring Boot] 웹 애플리케이션과 싱글톤

1- 웹 애플리케이션과 싱글톤

  • 싱글톤: 객체 인스턴스가 JVM에 딱 하나만 존재해야하는 것

  • 스프링은 태생이 기업용 온라인 서비스 기술 지원을 위해 탄생함
  • 대부분 스프링 애플리케이션은 웹 애플리케이션임. 물론 웹이 아닌 애플리케이션 개발도 만들 수 있음.
  • 웹 애플리케이션은 보통 여러 고객이 동시에 요청함

  • 스프링이 없는 순수한 DI 컨테이너로 작업할 경우 객체를 호출할 때마다 객체가 생성되는 문제가 발생함

  • 해당 강의 이전 코드인 스프링 없는 순수한 DI 컨테이너인 AppConfig는 요청할때마다 객체를 생성함
  • 고객 트래픽이 초당 100이 나오면 초당 100개 객체가 생성되고 소멸됨 -> 메모리 낭비가 심함
  • 해결 방안은 해당 객체가 딱 한 개만 생서되고 공유되도록 설계하면 됨  -> 싱글톤 패턴

2- 하널쓰가 예상하는 코드 리팩토링

 

  • 싱글톤패턴의 특징은 기억에 기본 생성자의 접근지정자가 private이고, static으로 선언된 해당 객체 변수를 get 메서드를 통해 반환해주는 것으로 기억함
  • 해당 객체 변수를 private으로 선언해 임의적인 접근을 막고, 자바 메모리 중 클래스 영역에 해당 변수가 생성되어 공유되어야 하기때문에 static 형태로 선언해줌
  • 그리고 getAppConfig 수행시 변수의 인스턴스 생성 여부를 체크해 생서되지 않았다면 생성을 아니라면 해당 변수를 리턴.