반응형
@Configuration과 싱글톤의 관계
@Configuration과 싱글톤
@Configuration
public class AppConfig {
@Bean
public MemberService memberService() {
return new MemberServiceImpl(memberRepository());
}
@Bean
public OrderService orderService() {
return new OrderServiceImpl(
memberRepository(),
discountPolicy());
- MemberService 와 OrderService 를 보면 new memberRepository() 를 호출한다. → 싱글톤이 지켜지지 않는다고 생각할 수 있다.
@Test
void configurationTest() {
AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class);
MemberServiceImpl memberService = ac.getBean("memberService", MemberServiceImpl.class);
OrderServiceImpl orderService = ac.getBean("orderService", OrderServiceImpl.class);
MemoryMemberRepository memberRepository = ac.getBean("memberRepository", MemoryMemberRepository.class);
MemberRepository memberRepository1 = memberService.getMemberRepository();
MemberRepository memberRepository2 = orderService.getMemberRepository();
System.out.println("memberService -> memberRepository = " + memberRepository1);
System.out.println("orderService -> memberRepository = " + memberRepository2);
System.out.println("memeberRepository" + memberRepository);
assertThat(memberService.getMemberRepository()).isSameAs(memberRepository);
assertThat(orderService.getMemberRepository()).isSameAs(memberRepository);
}
- 하지만 테스트 코드를 통해 보면 모두 같은 인스턴스를 공유하고 있다.
- 이게 어떻게 된 일인지 다음 글에서 마저 다뤄본다.
출처 : 스프링 핵심 원리 - 기본편 - 인프런
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/dashboard
(강의 내용을 참고로 개인 공부하여 올린 내용입니다.)
반응형
'Framework & Library > Spring Boot' 카테고리의 다른 글
[Spring Boot] : 컴포넌트 스캔과 의존관계 자동 주입 (0) | 2022.01.09 |
---|---|
[Spring Boot] : @Configuration과 바이트코드 조작 (0) | 2022.01.09 |
[Spring Boot] : 싱글톤 사용시 주의해야 하는 것 (0) | 2022.01.08 |
[Spring Boot] : 싱글톤 패턴 (0) | 2022.01.06 |
[Spring Boot] : 웹 애플리케이션 문제 (0) | 2022.01.06 |
댓글