-
카테고리
-
세부 분야
백엔드
-
해결 여부
해결됨
싱글톤 질문 드립니다.
22.08.09 20:33 작성 조회수 135
1
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예
[질문 내용]
여기에 질문 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예
[질문 내용]
여기에 질문 내용을 남겨주세요.
싱글톤 컨테이너 강의를 듣다가 의문점이 생겨 테스트 코드를 추가하면서 질문이 생겼습니다.
인스턴스를 생성하지 않고 하나의 객체로 관리하는 것이 싱글톤이라고 이해했습니다. 그래서 다음과 같이 코드를 작성해봤더니
@Test
@DisplayName("스프링 컨테이너와 싱글톤")
void springContainer() {
ApplicationContext applicationContext1 = new AnnotationConfigApplicationContext(AppConfig.class);
MemberService memberService1 = applicationContext1.getBean("memberService", MemberService.class);
MemberService memberService2 = applicationContext1.getBean("memberService", MemberService.class);
System.out.println("memberService1 = " + memberService1);
System.out.println("memberService2 = " + memberService2);
assertThat(memberService1).isSameAs(memberService2);
ApplicationContext applicationContext2 = new AnnotationConfigApplicationContext(AppConfig.class);
MemberService memberService3 = applicationContext2.getBean("memberService", MemberService.class);
assertThat(memberService1).isSameAs(memberService3);
}
위의 코드에서 applicationContext1에서 가져온 빈과 2에서 가져온 빈이 다르다는 것을 확인했습니다.
하나의 스프링 컨테이너에서 관리된다고 생각했는데 아니었네요
그렇다면 ApplicationContext의 인스턴스를 계속 생성해줘야 하니 싱글톤이 아닌것 아닌가요? 잘 이해되지 않네요ㅠ
답변을 작성해보세요.
1
OMG
2022.08.09
안녕하세요. 서한성님, 공식 서포터즈 OMG입니다.
ApplicationContext applicationContext2 = new AnnotationConfigApplicationContext(AppConfig.class);
ApplicationContext 자체가 스프링 컨테이너이기 때문에 서로 다른 스프링 컨테이너를 2개 생성하신 것으로
서로 다른 빈이 생성되는게 맞습니다.
질문에 대한 직접적인 답변은 아니지만 참고하시면 도움 되리라 생각합니다.
https://www.inflearn.com/questions/212497
감사합니다.
답변 1