본문 바로가기
강의 실습/스프링 핵심 원리 - 기본편

웹 애플리케이션과 싱글톤

by jint 2026. 4. 13.

스프링은 태생이 기업용 온라인 서비스 기술을 지원하기 위해 탄생했기에, 대부분 스프링 애플리케이션은 웹 애플리케이션이다. (웹이 아닌 애플리케이션 개발도 가능)
웹 애플리케이션은 보통 여러 고객이 동시에 요청한다.

 

웹 애플리케이션으로 여러 고객의 동시 요청



1. 스프링 없는 순수한 DI 컨테이너 테스트
- src/test/java/hello/core/singleton/SingletonTest.java

package hello.core.singleton;

import hello.core.AppConfig;
import hello.core.member.MemberService;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;

import static org.assertj.core.api.Assertions.*;

public class SingletonTest {

    @Test
    @DisplayName("스프링 없는 순수한 DI 컨테이너")
    void pureContainer() {
        AppConfig appConfig = new AppConfig();

        // 1. 조회: 호출할 때마다 객체 생성
        MemberService memberService1 = appConfig.memberService();

        // 2. 조회: 호출할 때마다 객체 생성
        MemberService memberService2 = appConfig.memberService();

        // 참조값이 다른 것을 확인
        System.out.println("memberService1 = " + memberService1);
        System.out.println("memberService2 = " + memberService2);

        // memberService1 != memberService2
        assertThat(memberService1).isNotSameAs(memberService2);
    }

}


스프링 없는 순수한 DI 컨테이너 AppConfig 는 요청할 때마다 객체를 새로 생성한다.
고객 트래픽이 초당 100건이 나오면, 초당 100개의 객체가 생성되고 소멸되어 메모리 낭비가 심하다.

따라서 해당 객체가 딱 1개만 생성되고, 공유하도록 설계한다.
-> 싱글톤 패턴


참고링크 : https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8?cid=325969

 

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

현재 평점 5.0점 수강생 49,545명인 강의를 만나보세요. 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다. 스프링 기본 기능, 스프

www.inflearn.com

댓글