본문 바로가기

Back End/Spring53

Spring - AppConfig 중복을 제거하고, 역할에 따른 구현이 보이도록 리팩터링 하자. package hello.core; import hello.core.discount.DiscountPolicy; import hello.core.discount.FixDiscountPolicy; import hello.core.member.MemberRepository; import hello.core.member.MemberService; import hello.core.member.MemberServiceImpl; import hello.core.member.MemoryMemberRepository; import hello.core.order.OrderService; import hello.core.order.OrderServiceImpl.. 2023. 7. 7.
Spring - DIP, OCP를 지키는 도메인 서비스 기존 코드는 이렇게 추상화와 구현체에 모두 의존하고 있지만 이를 생성자를 통해서 분리해주면 아래와 같은 코드가 되면서 MemberServiceImpl에서는 MemoryMemberRepository()인 구현체에 대해서는 의존하지 않기 때문에, DIP를 위반하지 않게된다. 대신 AppConfig에서 MemberService인터페이스는 그의 구현체인 MemberServiceImpl을 부르고, 구현체를 부를때 인수를 통해 MemoryMemberRepository를 생성해서 넣어주게 된다. (생성자 주입) 설계 변경으로 MemberServiceImpl 은 MemoryMemberRepository 를 의존하지 않는다! 단지 MemberRepository 인터페이스만 의존한다. MemberServiceImpl 입장.. 2023. 7. 7.
spring - 회원 도메인 설계 회원 도메인 요구사항 회원을 가입하고 조회할 수 있다. 회원은 일반과 VIP 두 가지 등급이 있다. 회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다. (미확정) 회원 클래스 다이어그램 : 정적 회원 객체 다이어그램 : 동적 하지만 이렇게 구현했을시에 문제점들이 있다. //MemberServiceImpl은 MemberRepository에도 의존하고 MemoryMemberRepository에도 의존함 public class MemberServiceImpl implements MemberService{ //이부분에서 DIP 위반, 실제 할당하는 부분이 구현체를 의존함 private final MemberRepository memberRepository = new MemoryMembe.. 2023. 7. 6.
Spring - springboot 초기 설정 2023. 7. 6.