-
웹 애플리케이션과 싱글톤spring/스프링 핵심 원리 강의 내용 정리 2023. 12. 8. 15:19
스프링은 태생이 기업용 온라인 서비스 기술을 지원하기 위해 탄생했다
대부분의 스프링 애플리케이션은 웹 애플리케이션이다
물론 웹이 아닌 애플리케이션 개발도 얼마든지 가능하다
웹 애플리케이션은 보통 여러 고객이 동시에 요청을 한다
클라이언트 A, B, C 세명이 있다고 가정하자
세 사람이 동시에 memberService 를 요청했을 때,
DI 컨테이너(AppConfig)는, memberService 객체를 세번 생성하여 반환해야 한다
실제 이렇게 동작하는지 코드로 테스트 해보자hello.core.member.MemberServiceimpl@7d61eb55
hello.core.member.MemberServiceimpl@18ece7f4
로 다른 객체가 반환된 것을 볼 수 있다
언뜻보면 객체가 두개 생성 된 것으로 보이지만, 실제로는 MemberServiceimpl 이 의존하는 MemoryMemberRepository
까지 총 4개의 객체가 생성 된 것이다
우리가 만든 스프링 없는 순수한 DI 컨테이너인 AppConfig는, 요청할 때 마다 객체를 새로 생성한다
고객 트래픽이 초당 100이 나오면 초당 100개의 객체가 생성되고 소멸된다 -> 메모리 낭비가 심하다
해결방안은 해당 객체가 딱 1개만 생성되고, 공유하도록 설계하면 된다 -> 싱글톤 패턴'spring > 스프링 핵심 원리 강의 내용 정리' 카테고리의 다른 글
싱글톤 컨테이너 (0) 2023.12.08 싱글톤 패턴 (1) 2023.12.08 스프링 빈 설정 메타 정보 - BeanDefinition (1) 2023.12.08 다양한 설정 형식 지원 - 자바 코드, XML (1) 2023.12.08 BeanFactory와 ApplicationContext (1) 2023.12.08