[스프링 기본] 예제 만들기

마코레·2022년 4월 14일
0

백엔드개발

목록 보기
2/18

🤗 인프런 [스프링 핵심원리-기본편]을 듣고 기록하는 글입니다





설치하기


그냥 버전 8도 괜찮은줄 알았더니 11로 업글해야한단다
글구 요즘은 무줙건 Gradle하고 Jar 사용!

가장 기본이 되는 dependencies는 starter하고 test관련 라이브러리!

※ build and run을 gradle쓰지말고 intellij쓰기. 훨씬 빌드가 빠르다고함. java를 바로실행해서

비즈니스 요구사항과 설계


영상내에 보면 영업직군쪽에서 비즈니스 요구사항을 전해준 것처럼 필요한 기능들 리스트를 주셨다. 그걸통해서 어떻게 프로젝트를 설계해야하는지를 배우게된다고한다.

특히 주목할 점이, 주문과 할인 정책에서, 할인정책은 vip는 1000원 할인이라고 적혀는 있지만 추후 변경될 수 있다고한다. 바뀔수도있고, 아예 안들어갈수도있고.

이렇게 불확실한 부분이 있을때 어떻게 설계를 해야하는지! 는 바로 객체 지향 설계방법~ 역할과 구현으로 세상을 나누면 어떤것도 무섭지 않아~

회원 도메인 설계


회원은 두가지 등급이 있고, 데이터는 자체 DB혹은 외부와 연동할수있음(미확정이라고함 ;;;)

  • 역할
  • 클라이언트
  • 회원 서비스
  • 회원 저장소
    • 구현체
    • 메모리 회원 저장소
    • DB 회원 저장소
    • 외부 시스템 연동 저장소

이런식으로 미리 구현체 3개를 둬서 갈아끼우는 식으로 만들겠다 생각하고 설계를 하는것.

여기서 강의때 궁금했던점이:

memberService를 interface로 만들고 memberServiceImpl라고 구현체를 또 따로 만드는거로 설계가 되어있었다. 굳이 구현체가 하나인데 왜 인터페이스를 도입하는지 궁금했음.


그래서 찾아봤더니 강사님이 적어주신 답변이 있더라구용

강의에서 그렇게 구성한 이유는 그냥 예시를 들기 위해서고, 실제 실무에서는 구현체를 전혀 변경할일이 없다면 인터페이스 도입도 비용이므로 도입하지 않는것을 고려해보는것도 좋다는식! 서비스 by 서비스라는 의미인거같다.

그치만 기본 베이스를 모두 역할과 구현으로 나눈다고생각해야할거같다.

구현체에 뭘 넣을지는 서버가 구동될때 동적으로 결정되는 부분임. 실제로 사용하는 구현체가 무엇인지를 보여주는, 유효한 객체간의 참조가 어떤구조인지로 그려줘야한다고 한다.

실제 객체간의 참조
클라이언트회원 → 서비스 impl → 메모리 회원 저장소

profile
새싹 백엔드 개발자

0개의 댓글