비즈니스 요구사항과 설계
- 회원
- 회원을 가입하고 조회할 수 있다.
- 회원은 일반과 VIP 두 가지 등급이 있다.
- 회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다. (미확정)
- 주문과 할인 정책
- 회원은 상품을 주문할 수 있다.
- 회원 등급에 따라 할인 정책을 적용할 수 있다.
- 할인 정책은 모든 VIP는 1000원을 할인해주는 고정 금액 할인을 적용한다. (나중에 변경 될 수 있다.)
- 할인 정책은 변경 가능성이 높다. 회사의 기본 할인 정책을 아직 정하지 못했고, 오픈 직전까지 고민을 미루고 싶다. 최악의 경우 할인을 적용하지 않을 수도 있다. (미확정)
고려해야 할 부분: 아직 확정되지 않은 회원 데이터, 할인 정책 같은 부분은 당장 결정해서 개발하기 어렵다.
-> 인터페이스를 통해 추상화하여 구현체를 갈아끼우면 바뀌도록 객체지향적으로 설계하면 된다!
회원 도메인 설계
- 회원 도메인 요구사항
- 회원을 가입하고 조회할 수 있다.
- 회원은 일반과 VIP 두 가지 등급이 있다.
- 회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다. (미확정)



*회원 서비스 구현체: MemberService.Impl
회원 도메인 개발
- 회원 등급: enum(BASIC, VIP)
- Member: 회원 엔티티
- MemberRepository: 회원 저장소 인터페이스
- 구현: MemoryMemberRepository - 메모리 회원 저장소 구현체 (DB가 아직 확정이 안되었지만, 개발은 진행해야 하니 우선 가장 간단한 메모리 회원 저장소로 구현)
- MemberService: 회원 서비스 인터페이스
- 구현: MemberServiceImpl - 회원 서비스 구현체
회원 도메인 실행과 테스트
# keymap을 검색하여 단축키 설정 가능
# command + N: 생성자, getter, setter 단축키
# 구현체가 하나만 있을 때는 구현체 뒤에 Impl을 붙이는 것이 관례
# 객체 선언 시 command + shift + enter를 사용하면 ;까지 자동으로 완성
# psvm + enter: main메서드 자동생성
# command + option + v: 객체 자동 선언
주문과 할인 도메인 설계
- 주문과 할인 정책
- 회원은 상품을 주문할 수 있다.
- 회원 등급에 따라 할인 정책을 적용할 수 있다.
- 할인 정책은 모든 VIP는 1000원을 할인해주는 고정 금액 할인을 적용한다. (나중에 변경될 수 있다.)
- 할인 정책은 변경 가능성이 높다. 회사의 기본 할인 정책을 아직 정하지 못했고, 오픈 직전까지 고민을 미루고 싶다. 최악의 경우 할인을 적용하지 않을 수도 있다. (미확정)

1. 주문 생성: 클라이언트는 주문 서비스에 따른 주문 생성을 요청한다.
2. 회원 조회: 할인을 위해서는 회원 등급이 필요하다. 그래서 주문 서비스는 회원 저장소에서 회원을 조회한다.
3. 할인 적용: 주문 서비스는 회원 등급에 따른 할인 여부를 할인 정책에 위임한다.
4. 주문 결과 반환: 주문 서비스는 할인 결과를 포함한 주문 결과를 반환한다.



주문과 할인 도메인 개발
- DiscountPolicy: 할인 정책 인터페이스 (추상화)
- 구현: FixDiscountPolicy - 정액 할인 정책 구현체
- Order: 주문 엔티티
- OrderService: 주문 서비스 인터페이스
- 구현: OrderServiceImpl - 주문 서비스 구현체
주문과 할인 도메인 실행과 테스트
# long은 null이 못 들어가고 Long은 들어갈 수 있음
스프링 핵심 원리 - 기본편 강의 | 김영한 - 인프런
김영한 | 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다., 스프링 핵심 원리를 이해하고, 성장하는 백엔드 개발자가 되어보
www.inflearn.com
'Back-End > Inflearn' 카테고리의 다른 글
| [스프링 핵심 원리 - 기본편] 의존관계 자동 주입 (1) | 2025.04.13 |
|---|---|
| [스프링 핵심 원리 - 기본편] 컴포넌트 스캔 (0) | 2025.04.11 |
| [스프링 핵심 원리 - 기본편] 싱글톤 컨테이너 (7) | 2024.11.21 |
| [스프링 핵심원리 - 기본편] - 스프링 컨테이너와 스프링 빈 (5) | 2024.11.16 |
| [스프링 핵심 원리 - 기본편] 스프링 핵심 원리 이해2 - 객체 지향 원리 적용 (9) | 2024.11.11 |