인프런/스프링핵심원리(기본)17 5)주문과 할인 도메인 설계와 개발 1. 주문 생성: 클라이언트는 주문 서비스에 주문 생성을 요청한다. (클라이언트는 controller 같은거라 생각하면됨) -> 회원아이디,상품명,상품가격을 같이 넘긴다. 2. 회원 조회: 할인을 위해서는 회원 등급이 필요하다. 그래서 주문 서비스는 회원 저장소에서 회원을 조회한다. (등급을 받아와서 할인을 해야하는지 판단해야해서) 3. 할인 적용: 주문 서비스는 회원 등급에 따른 할인 여부를 할인 정책에 위임한다. (할인 정책한테 할인 해도되는건지 확인하는 부분) 4. 주문 결과 반환: 주문 서비스는 할인 결과를 포함한 주문 결과를 반환한다. 역할과 구현을 분리해서 구현하려고 설계 (중요) 역할과 구현을 분리해서 자유롭게 구현 객체를 조립할 수 있게 설계했다. 덕분에 회원 저장소는 물론이고, 할인 정책.. 인프런/스프링핵심원리(기본) 2022. 12. 7. 4)회원 도메인 설계,회원 도메인 개발 이전에 들은 요구사항에 대해 듣고 개발자가 설계해야하는 부분이다. 기획자가 원하는 회원관련 요구사항 설계할때 플로우를 생각해본다. 1. 클라이언트가 회원서비스를 호출한다. (회원서비스는 회원가입,회원조회 기능을 가지고 있다) 2. 회원저장소 인터페이스를 만든다 ( 어떤 저장소로 바꿔끼울수 있게끔) 도메인 레벨의 큰 그림 (기획자도 볼수 있는 그림) 각각 클라이언트 역할 ,회원서비스 역할, 회원 저장소 역할이고 메모리회원저장소,DB 회원 저장소, 외부 시스템 연동 회원저장소는 구현이다. 구현중 하나를 회원저장소 역할에 꼽아쓰면된다. 아직 회원저장소에 대해 기획이 안나왔지만 개발을 해야한다. 그래서 메모리 회원 저장소를 만들어서 개발을 시작한다. 메모리를 이용한 저장소는 로컬에서 개발할때도 쓰이고, 테스트할.. 인프런/스프링핵심원리(기본) 2022. 12. 1. 3)예제프로젝트 시작, 비즈니스 요구사항과 설계 예제만들기 프로젝트의 시작은 https://start.spring.io/ 에서 시작한다. 어떤 프로젝트인지(gradle,maven) 스프링부트 어떤버전을 사용할것인지 등 초기설정을 하고 설정된 프로젝트파일을 받을 수 있다. 이번프로젝트는 Gradle 프로젝트이고, 다른설정 및 Dependencies 추가없이 해당 설정을 Generate 해준다. 받은 압축파일을 풀고 인텔리제이에서 file -> new -> project from exisiting sources로 압축푼 폴더를 선택해준다. Build.gradle build.gradle을 보면 스프링부트 버전과, 자바버전을 확인가능하고 spring initialize에서 dependencies추가한게 없기때문에 디펜던시를 보면 기본적인 starter와 테스.. 인프런/스프링핵심원리(기본) 2022. 12. 1. 2)좋은 객체 지향설계의 5가지 원칙(SOLID), 객체지향 설계와 스프링 SRP (단일 책임 원칙 , Single responsibility principle) 하나의 책임이라는게 정하기 모호하다. 하나의 책임의 중요한 기준은 변경이다. 변경이 있을때 파급효과가 적으면 단일 책임 원칙을 잘 따른것이라고 한다. ex)만약 ui를 고치려고하는데 sql문부터 시작해서 다른 변경이 많이 생길때 -> 단일 책임 원칙을 잘 따르지 못했다. OCP 개방-폐쇄 원칙 가장중요한 원칙 리포지토리를 메모리리포지토리,jpa리포지토리 등등으로 바꿔도 기존의 코드는 바꾸지않았던점, (새로 리포지토리 구현체만 생성했을뿐 기존 코드는 건들지않음.) 이전 게시글에서 운전자 예시중 자동차가 바뀌어도 운전자는 운전이 가능했다는점 이런 다형성의 예시로 설명이 가능하다. 메모리리포지토리에서 jdbc리포지토리로 바.. 인프런/스프링핵심원리(기본) 2022. 12. 1. 1)스프링이란?, 좋은 객체 지향 프로그래밍? 스프링 생태계 스프링은 어떤 특정한 하나가 아니라 여러가지 기술들의 모음이라고 볼수 있다. 먼저 스프링의 핵심인 스프링 프레임워크 여러 스프링 기술들을 편리하게 사용할 수 있게끔해주는 스프링부트 그리고 나머지 선택사항들 https://moolgogiheart.tistory.com/87 프레임워크(Framework)란? 개념, 장단점, 종류 프레임워크라는 개념을 접하기 전에 '부트스트랩(Bootstrap)'이란 용어를 먼저 알게 되었습니다. 웹 프로젝트를 개발하기 위한 좋은 툴이라는 것을 듣게 되었죠.그래서 부트스트랩이 무엇인지 자 moolgogiheart.tistory.com 스프링 프레임워크 스프링프레임워크만 쓰는게 아니고 스프링 프레임워크를 편리하게 사용할 수 있는 스프링 부트 라는것을 통해서 스프링.. 인프런/스프링핵심원리(기본) 2022. 11. 30. 이전 1 2 다음