Spring
주문과 할인 도메인 실행과 테스트
주문과 할인 도메인 실행과 테스트
2022.05.25주문과 할인 정책 실행 주문과 할인 정책 실행 할인된 금액이 잘 출력되는 것을 확인할 수 있따. 애플리케이션 로직으로 이렇게 테스트 하는 것은 좋은 방법이 아니다. JUnit 테스트를 사용하자. 주문과 할인 정책 테스트 테스트 실행 속도는 단위테스트(스프링이나 컨테이너의 도움 없이 자바코드로만 테스트 하는 것)가 더빠르다. 하지만, 별로 좋은 방법은 아니다. 단위테스트나, JUnit을 용도에 맞게 사용해야 한다. 다음시간에는 우리가 개발한 것에서 정액 할인 정책을 정률 할인 정책으로 바꾸거나 했을 때, 정말 우리가 개발한것이 객체지향적으로 잘 개발된 것이 맞을지, 클라이언트에 영향을 주지 않는지 확인할 것이다. 역할과 구현을 잘 분리했는데, 과연 정률 할인 정책으로 깔끔하게 바꿀 수 있을까? 분명히 다형..
스프링 기본 - 주문과 할인 도메인 개발
스프링 기본 - 주문과 할인 도메인 개발
2022.05.25주문과 할인 도메인 개발 할인 정책 인터페이스 정액 할인 정책 구현체 VIP면 1000원 할인, 아니면 할인 없음. 주문 엔티티 주문 서비스 인터페이스 주문 서비스 구현체 주문 생성 요청이 오면, 회원 정보를 조회하고, 할인 정책을 적용한 다음 주문 객체를 생성해서 반환한다. 메모리 회원 리포지토리와, 고정 금액 할인 정책을 구현체로 생성한다.
스프링 기본 - 주문과 할인 도메인 설계
스프링 기본 - 주문과 할인 도메인 설계
2022.05.24주문과 할인 도메인 설계 주문과 할인 정책 회원은 상품을 주문할 수 있다. 회원 등급에 따라 할인 정책을 적용할 수 있다. 할인 정책은 모든 VIP는 1000원을 할인해주는 고정 금액 할인을 적용해달라. (나중에 변경될 수 있다.) 할인 정책은 변경 가능성이 높다. 회사의 기본 할인 정책을 아직 정하지 못했고, 오픈 직전까지 고민을 미루고 싶다. 최악의 경우 할인을 적용하지 않을 수 도 있다. (미확정) 주문 도메인 협력, 역할, 책임 1. 주문 생성: 클라이언트는 주문 서비스에 주문 생성을 요청한다.(클라이언트 : main코드, MVC의 컨트롤러 등) 2. 회원 조회 : 할인을 위해서는 회원 등급이 필요하다. 그래서 주문 서비스는 회원 저장소에서 회원을 조회한다. 3. 할인 적용 : 주문 서비스는 회원..
스프링 기본 - 회원 도메인 실행과 테스트
스프링 기본 - 회원 도메인 실행과 테스트
2022.05.24이번에는 회원 도메인 실행과 테스트를 해볼 것이다. 회원 객체 다이어그램을 실제로 만들어 보는 것이다. 실제로 런타임에 동작을 하면, 클라이언트는 MemberServiceImpl 이라는 회원 서비스를 사용하게 되고, 회원 서비스는 메모리 회원 저장소(MemoryMemberRepository)를 사용하게 된다. 실제 인스턴스간의 참조그림은 위와 같다. 실제 동작하는지 실행과 테스트를 해보자. 회원 도메인 실행과 테스트 회원 도메인 - 회원 가입 main 애플리케이션 로직으로 이렇게 테스트 하는 것은 좋은 방법이 아니다. JUnit 테스트를 사용하자. 회원 도메인 - 회원 가입 테스트 Test폴더에 member패키지를 생성하고, 거기에 MemberServiceTest 클래스를 만들었다. Assertions는..
스프링 기본 - 회원 도메인 개발
스프링 기본 - 회원 도메인 개발
2022.05.24회원 엔티티 회원 등급 회원 엔티티 회원 저장소 회원 저장소 인터페이스 MemberRepository는 회원 도메인 설계에서 보았듯, DB가 선정되지 않았기에 인터페이스로 구성했다. 메모리 회원 저장소 구현체 DB가 아직 확정되지 않았으므로, 가장 단순한 메모리 회원 저장소를 구현해서 우선은 개발을 진행할 수 있게 헀다. ※ 참고 : HashMap은 동시성 이슈가 발생할 수 있다. 실무에서는 이런경우에 CuncurrentHashMap을 사용한다. 회원 서비스 회원 서비스 인터페이스 회원 서비스 구현체 이렇게 하면, 회원 서비스 구현체에서 join을 통해 save를 호출하면, MemoryMemberRepository클래스의 save()가 호출되고, 마찬가지로 MemberServiceImpl에서 findMe..
스프링 기본 - 회원 도메인 설계
스프링 기본 - 회원 도메인 설계
2022.05.24회원 도메인 설계 회원을 가입하고 조회할 수 있다. 회원은 일반과 VIP 두 가지 등급이 있다. 회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다. (미확정) 회원 도메인 협력 관계 회원 저장소 인터페이스를 만들고, DB를 갈아끼울 수 있도록 설계한다. 회원 클래스 다이어그램 실제 구현 레벨로 내려오면, '회원 클래스 다이어그램' 이 그림과 같이 그려진다. MemberService를 인터페이스로 만들고, 그것에 대한 구현체로 MemberServiceImpl을 만든다. MemberServiceImpl가 MemberService 인터페이스와 연결되고, MemberRespository인터페이스의 구현클래스로 MemoryMemberRepository, DbMemberRepository ..