test/java/hello.core/singleton(package)/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);
}
}
-1,2가 다르게 생성된 거 확인 가능
-웹 어플리케이션은 요청이 많은데 그때마다 객체 생성되면 문제
//memberService1 != memberService2
assertThat(memberService1).isNotSameAs(memberService2);
-스프링 없는 순수한 DI 컨테이너인 AppConfig는 요청을 할 때 마다 객체를 새로
생성
-고객 트래픽이 초당 100이 나오면 초당 100개 객체가 생성되고 소멸, 메모리 낭비가 심함.