스프링 부트 핵심원리 이해(#섹션 3)
- 일단 객체 지향 프로그래밍의 도메인 설계를 배우자
##실습##
들어간 후 core 파일을 생성 후 인텔리제이에 적용
2. 예제 만들기
<비즈니스 요구사항과 설계>
"우리는 개발자"
(회원,member)
[1] 회원 가입 및 조회가 가능해야해!!
[2] 일반 회원과 VIP회원, 두 등급으로 나누어 져야해~!
[3] 자체 DB를 구축하지만 외부 시스템과 연동이 되야해(미확정)
============================================================
(주문,할인 :: order,discount)
[4] 회원은 상품을 주문할수 있어야해
[5] 회원 등급에 따라 할인 정책이 적용되어야해
[6] 회원 등급이 VIP이면 1000원 할인해야해!!BUT
[7] 이 할인 정책은 변경 될수도 있어...
============================================================
3. 회원 도메인 설계
<도메인이란?>
프로그램이 다루는 "현실 세계의 개념"을 코드로 옮겨놓은 것
위 회원 기능을 모두 가지게 하려면
회원 도메인에는 MemberRespository 인터페이스, MemoryMember Repository 클래스, MemberService 인터페이스, MemberServiceTest 클래스, MemberServiceImpl 클래스, Member 클래스, Grade(ENUM)이 포함된다.

코드를 붙여넣고 설명하는 걸 모두 펼쳐 적으면
너무 가독성이 떨어지고
글이 길어질것 같아 코드와 코드에 대한 설명은 내가 정리한 텍스트 파일을 첨부하겠다!!
자세한 설명 모두 작성하였다.
<회원 도메인 및 코드가 실현되는 과정>
MemberServiceImpl에서 회원을 가입시킴
-->Member 클래스에서의 형태로 받아들임(id, name, grade)
--> MemberRepository 인터페이스를 통해 저장소MemoryMemberRepository에 저장됨
--> MemberService 인터페이스에서 findMember()함수에서 id들을 호출해 test 코드에서 출력
[주문 사항 적용]
[1] 회원 가입 및 조회가 가능해야해!!
회원 가입 및 조회가 가능하도록 join( )함수, findMember( )함수 적용
[2] 일반 회원과 VIP회원, 두 등급으로 나누어 져야해~!
Grade enum으로 일반 회원, VIP 회원 세분화
[3] 자체 DB를 구축하지만 외부 시스템과 연동이 되야해(미확정)
MemberService 인터페이스에서 언제든지 변경 가능하도록 코드 작성
4. 주문과 할인 도메인 설계
[4]~[7]의 주문사항을 적용한 도메인 설계
Order(주문) 패키지와 Discount(할인) 패키지 설계

이 코드와 설명도 위 회원 도메인과 비슷하게
따로 설명을 적어 첨부하겠다!!
<주문,할인 도메인 및 코드가 실현되는 과정>
DiscountPolicy인터페이스를 통해 할인 정책에 member 적용
----> FixDiscountPolicy클래스를 통해 할인 적용할 경우 계산
주문 요청이 들어옴 (createOrder)
---->회원 정보 조회 (memberRepository.findById)
[주문 사항 적용]
[4] 회원은 상품을 주문할수 있어야해
order 패키지에서 member 패키지를 적용해서 회원 상품 주문
[5] 회원 등급에 따라 할인 정책이 적용되어야해
[6] 회원 등급이 VIP이면 1000원 할인해야해!!BUT
if-else 문을 통해 등급을 나누어 할인 정책 적용
[7] 이 할인 정책은 변경 될수도 있어...
해결 방법 주문 서비스 구현체
-정액 할인: 구입시 1000원씩 할인(1개당 1000원)
-정률 할인: 10000원 구입시 1000원 할인, 20000원 구입시 2000원 할인(10%할인)
변경이 쉽게 DiscountPolicy 인터페이스 구현함
끝!!!!!!
'WINK-(Web & App) > Spring Boot 스터디' 카테고리의 다른 글
[2025 1학기 스프링부트 스터디] 류현준 #2주차 (0) | 2025.04.08 |
---|---|
[2025 1학기 스프링 부트 스터디] 석준환 #3주차 (0) | 2025.04.08 |
[2025 1학기 스프링부트 스터디] 이종윤 #2주차 (0) | 2025.04.07 |
[2025 1학기 스프링 부트 스터디] 김민서 #2주차 (0) | 2025.04.06 |
[2025 1학기 스트링 부트 스터디] 고윤정 #2주차 (0) | 2025.04.06 |