-
카테고리
-
세부 분야
백엔드
-
해결 여부
미해결
싱글톤이 뭔가요..
21.07.08 10:46 작성 조회수 532
0
싱글톤이 뭔가요..
답변을 작성해보세요.
4
허영운
2021.07.13
1. 싱글톤 패턴(Singleton pattern)
싱글톤 패턴(Singleton pattern) 이란 생성자가 여러 차례 호출되더라도 실제로 객체를 단 하나만 생성하는 방법입니다. 즉, 처음 객체를 생성한 이후에 호출될 경우 이미 생성한 객체를 반환하여 하나의 인스턴스만을 사용하게 만드는 것을 말합니다.
2. 싱글톤 패턴 구현
2-1) 싱글톤 패턴을 사용하지 않았을 경우
@Test
void pureContatiner() {
AppConfig appConfig = new AppConfig();
//1. 호출할 때마다 다른 객체를 생성
MemberService memberService1 = appConfig.memberService();
//2. 호출할 때마다 다른 객체를 생성
MemberService memberService2 = appConfig.memberService();
Assertions.assertThat(memberService1).isNotSameAs(memberService2);
}
기본적으로 'Member member = new Member()'처럼 new 연산자를 이용해 객체를 생성하면 계속해서 객체를 만들어냅니다. 만약 많은 객체를 생성해야 하는 서비스(ex. 배민)를 만들 경우, 이방법을 사용한다면 메모리 낭비가 심해지게 됩니다.
2-2) 싱글톤 패턴을 사용할 경우
스프링 컨테이너를 예로 들면
@Test
void springContainer() {
AnnotationConfigApplicationContext appConfig = new AnnotationConfigApplicationContext (AppConfig.class);
MemberService memberService1 = appConfig.getBean(MemberService .class);
MemberService memberService2 = appConfig.getBean(MemberService .class);
System.out.println("memberService1 = " + memberService1);
System.out.println("memberService2 = " + memberService2);
Assertions.assertThat(memberService1).isSameAs(memberService2);
}
스프링 컨테이너로 Bean 객체를 호출할 경우 동일한 객체를 불러오는 것을 알 수 있습니다. (참조값 동일)
0
답변 2