티스토리 뷰

Framework/Spring

[Spring] Singleton Container

DUCKBAE's 2022. 8. 22. 22:18

스프링의 기본 빈 등록 방식은 싱글톤이다.

* 하지만 싱글톤 방식만 지원하는게 아니라 요청할 때마다 새로운 객체를 반환하는 기능도 제공한다.

 

스프링 컨테이너는 *싱글턴 패턴을 적용하지 않아도 객체 인스턴스를 싱글톤으로 관리한다.

@Configuration
public class AppConfig {

    @Bean //spring container에 등록
    public MemberService memberService() {
        return new MemberServiceImpl(memberRepository());
    }

    @Bean
    public MemberRepository memberRepository() {
        return new MemoryMemberRepository();
    }
}

스프링 컨테이너에 memberService와 memberRepository를 빈으로 등록하면, 각 객체를 하나만 생성하고 관리한다.

즉, 스프링 컨테이너에 memberService와 memberRepository는 싱글톤 객체로 생성되고 관리되는데 이 기능을 싱글톤 레지스트리라고 한다.

 

@Test
void springContainer() {
    ApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class);
    
    MemberService memberService = ac.getBean("memberService", MemberService.class);
    MemberService memberService2 = ac.getBean("memberService", MemberService.class);

    assertThat(memberService).isSameAs(memberService2); //true
}

테스트 코드로 memberService 객체 두개를 가져와 비교해 보았을 때 동일한 객체임을 알수가 있다.

 

참고

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

'Framework > Spring' 카테고리의 다른 글

[Spring] 데이터 유효성 검증  (0) 2022.10.04
[Spring] Component Scan  (0) 2022.08.24
[Spring] Container  (0) 2022.08.17
[JPA] 영속성  (0) 2022.08.09
[JPA] JPA  (0) 2022.08.08
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함