개발 공부/Spring
스프링 핵심원리 기본편 - 관심사의 분리
공부하는개발자_
2023. 12. 18. 20:37
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
핵심원리