개발 공부/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

 

 

 

 

 

 

핵심원리

 

 

 

 

기본편 -