memberServiceImpl이 MemoryMemberRepository를 지정
배우가 담당 배우를 섭외하는 것과 같음
=> AppConfig에서 해줘야 함
memberRepository에 구현체가 뭐가 들어갈지는 생성자를 통해서 선택
AppConfig를 통해 MemberService를 불러서 씀 -> MemberService구현체인 객체 MemberServiceImpl생성 됨
MemoryMemberRepository를 통해 아래의 생성자로 들어가 memberRepository에 MemoryMemberRepository가 할당 됨
MemberServiceImpl에 MemoryMemberRepository 코드는 없다
오로지 MemberRepository 인터페이스만 있다 => 추상화에만 의존!
구현체인 MemberServiceImpl은 전혀 모름 (AppConfig에서 생성을 해서 넣어주면 됨. "생성자 주입"이라고도 함)
아래와 같이 변경
OrderServiceImpl : 철저하게 DIP를 지키고 있음. 인터페이스에만 의존, 구체적인 클래스 전혀 모름
AppConfig를 통해 OrderService를 조회하면 OrderServiceImple이 반환이 되는데 MemoryRepository와 FixDiscountPolicy가 들어감
테스트코드 오류 수정
@BeforeEach : 테스트 메서드 실행 이전에 수행
프링@BeforeEach
핵심원리
기본편 -
'개발 공부 > Spring' 카테고리의 다른 글
스프링 핵심원리 기본편 - 새로운 구조와 할인 정책 적용 (0) | 2023.12.18 |
---|---|
스프링 핵심원리 기본편 -AppConfig 리팩터링 (0) | 2023.12.18 |
스프링 핵심원리 기본편 - 새로운 할인 정책 개발 적용과 문제점 (0) | 2023.12.18 |
스프링 핵심원리 기본편 - 주문과 할인 도메인 설계 (0) | 2023.12.14 |
스프링 핵심원리 기본편 - 비즈니스 요구사항과 설계 (0) | 2023.12.13 |