공부/Spring

[섹션 2] 스프링 핵심 원리 이해1 - 예제 만들기 (비즈니스 요구사항과 프로젝트 설계)

남쪽마을밤송이 2022. 9. 21. 17:49

* Inflearn에서 "스프링 핵심 원리 - 기본편" by 김영한 강의를 수강하며 작성한 글입니다.

 


 비즈니스 요구사항과 설계 

  • 위와 같은 요구 사항을 보면 회원 데이터, 할인 정책 같은 부분은 지금 결정하지 어려운 부분이다. 그렇다고 이런 정책이 결정될 때까지 개발을 무기한 기다릴 수도 없다.
  • 이런 상황에서 우리는 앞에서 배운 객체 지향 설계 방법을 사용할 수 있다! 인터페이스를 맏늘고 구현체를 언제든지 갈아끼울 수 있도록 설계하면 된다.
  • 참고로 현재는 순수 Java로만 개발을 진행하고 후에 Spring을 적용해본다.


 회원 도메인 설계 

  • 도메인 협력 관계는 기획자들도 볼 수 있는 그림
  • 아직 저장 방식이 확정되지 않은 상태이기 때문에, 메모리를 사용해서 개발을 진행하기로 결정한다.
    • 간단한 메모리 저장소를 만들어 로컬에서 개발하며 테스트할 때 사용하는 것이다. 그런데 메모리이기 때문에 서버가 재부팅되면 데이터가 다 날아갈 것이다. 따라서 딱 개발용으로만 사용하는 것
    • 이후 데이터베이스나 외부 시스템 저장소가 선택이 되면 그 부분을 구현해서 갈아끼우면 된다.

 

  • 도메인 협력 관계를 바탕으로 개발자가 클래스 다이어그램을 만듦
  • MemberService라는 인터페이스(역할) 생성
    • 이에 대한 구현체로 MemberServiceImpl를 생성
  • MemberRepository(회원 저장소)라는 인터페이스(역할) 생성
    •  이에 대한 구현 클래스로  MemoryMemberRepository와 DbMemberRepository...를 생성
  • 이대로 개발하면 됨

 

  • 클래스 다이어그램은 실제 서버를 실행하지 않고 클래들을 분석하기 위해 보는 그림이지만 서버가 실행될 때 MemoryMemberRepository를 넣을지 DbMemberRepository를 넣을지 동적으로 결정하기 때문에 클래스 다이어그램만으로 판단하기 어려운 부분을 객체 다이어그램으로 나타냄 
  • 객체 다이어그램은 실제 사용하는 유효한 객체간의 참조 관계를 나타냄
    • 여기서 회원 서비스는 MemberServiceImpl을  의미함