Learning-log/Spring & JPA55 (스프링 핵심 원리 - 기본편) 3-(4)AppConfig 리택터링, (5)새로운 구조와 할인 정책 적용, (6) 전체 흐름 정리 - AppConfig 리팩터링 지금까지 만들어 놓은 AppConfig 를 살펴보면 중복도 있으며 역할에 따른 구현이 한 눈에 보이지 않는다. 현재 변경 후 이렇게 바꾸면 메서드명을 바꿈으로써 역할이 다 드러남. 나중에 db로 바뀐다면 AppConfig에서 memberRepository 메서드가 리턴하는 객체만 바꿔끼워주면 됨. 역할과 구현이 모두 한 눈에 드러나게 됨 => 애플리케이션 전체 구성이 어떻게 돼 있는지 한번에 파악 가능 - 새로운 구조와 할인 정책 적용 정액할인을 정률할인 정책으로 변경해볼 것. AppConfig만 변경하면 됨! AppConfig로 인해 객체를 생성하고 구성하는 영역과 애플리케이션이 사용되는 영역 이렇게 두 영역으로 크게 분리 됨. 할인 정책 변경하려면 AppConfig 부분.. 2023. 4. 1. (스프링 핵심 원리 - 기본편) 3-(1)새로운 할인정책 개발, (2)새로운 할인 정책 적용과 문제점, (3)관심사의 분리 - 새로운 할인정책 개발 새로운 할인 정책 추가하려면 DIP, OCP를 지키지 못하는 문제 발생 => 이 문제를 해결하기 위해 여러 과정을 거치게 됨. => 새로운 할인 정책 : 기본 1000원 할인에서 10% 할인으로 변경하기 기존에 dicount package에 'RateDiscountPolicy' class를 만들고 기존의 DiscountPolicy Interface 를 implements 하기 class를 작성하고 Ctrl +Shift + T 를 눌러 Test생성하기 Test 작성하기 ( VIP라서 할인이 적용되는 경우와 적용되지 않는 경우 두가지 테스트) - 새로운 할인 정책 적용과 문제 새로운 할인 서비스를 적용하려면 OrderServiceImpl로 들어가야 함. OrderServiceImpl.. 2023. 3. 30. (스프링 핵심 원리 - 기본편) 2-주문과 할인 도메인 (6) 설계 , (7) 개발, (8)실행과 테스트 - 주문과 할인 도메인 설계 주문과 할인 정책을 다시 떠올려보자. 회원 : 상품 주문 가능 회원 등급에 따라 할인 정책 적용 가능 할인 정책 : 모든 vip는 1000원 할인하는 고정 금액 할인 적용(변경 가능) 할인 정책 변경 가능성이 높음 클라이언트는 주문 생성 가능/주문 서비스는 주문 생성의 역할을 함 회원저장소에서 회원 조회 회원등급을 가지고 할인 정책 역할에 할인 적용할 수 있는지 물어보고 그 결과를 주문서비스가 받음(주문 서비스는 회원 등급에 따른 할인 여부를 할인 정책에 위임) 주문서비스는 최종적으로 할인까지 적용된 주문결과를 클라이언트에게 반환 위처럼 역할과 구현을 분리 => 자유롭게 구현 객체 조립 가능. 회원저장소와 할인정책 모두 유연하계 변경 가능 정액 할인 정책에서 정률 할인 정책으.. 2023. 3. 27. (스프링 핵심 원리 - 기본편) 2-(3) 회원 도메인 설계, (4) 회원 도메인 개발, (5) - 회원 도메인 설계 회원 데이터는 자체 DB 구축 또는 외부 시스템과 연동(미확정) - 회원 도메인 설계하기 클라이언트 회원 서비스 (역할) 회원가입 회원조회 회원 저장소 (회원 데이터에 접근하는 계층 따로 만들기, 인터페이스, 역할) 구현 => 메모리 회원 저장소 : 메모리니까 컴퓨터 껐다 켜면 날아가므로 개발용으로만 사용, 테스트하거나 로컬에서 개발할 때 사용. 이걸로 개발하다가 나중에 데이터베이스나 외부 시스템이 결정되면 그걸로 바꿔 끼울 것! DB 회원 저장소 외부 시스템 연동 회원 저장소 - 회원 클래스 다이어그램(실제 구현레벨로 내려오면!) - 회원 객체 다이어그램(객체가 실제로 참조하는 주소) 클라이언트 -> 회원서비스Impl -> 메모리 회원 저장소 ** 윈도우 환경에서 IntelliJ .. 2023. 3. 26. (스프링 핵심 원리 - 기본편) 2-(1) 프로젝트 생성, (2) 비즈니스 요구사항과 설계 - 준비하기 JAVA11 IntelliJ 스프링 부트 스타터 사이트에서 스프링 프로젝터 생성 : https://start.spring.io - 프로젝트 열기 build.gradle 파일을 open as project * build.gradle 내에서 설정을 변경하면 반드시 옆에 코끼리 아이콘 눌러줘야 라이브러리 등이 변경 된다 !! - 실행해보기 - 설정 [File] - [Settings] - Gradle 검색 - 아래 사진처럼 [Build and run using]과 [Run tests usint]을 'IntelliJ IDEA'로 바꾸기 이렇게 설정하면 Gradle을 통해 실행하지 않고, IntelliJ로 바로 실행하기 때문에 조금 더 빠르다고 한다. - 비즈니스 요구사항 확인 회원 : 회원 가입, 조.. 2023. 3. 25. (스프링 핵심 원리 - 기본편) 1-(5) 객체 지향 설계와 스프링 - 스프링과 객체지향 스프링은 다음 기술로 다형성 + OCP, DIP를 가능하게 지원 DI(Dependency Injection) : 의존관계, 의존성 주입 DI 컨테이너 제공 * OCP : 개방-폐쇄원칙 * DIP : 의존성 역전 원 클라이언트 코드의 변경 없이 기능 확장 쉽게 부품을 교체하듯이 개발 - 정리 모든 설계에 역할과 구현 분리할 것 애플리케이션 설계도 공연을 설계 하듯이 배역만 만들어두고 배우는 유연하게 변경할 수 있도록 하는 것이 좋은 객체 지향 설계 이상적인 건 모든 설계에 인터페이스를 부여하는것 2023. 3. 25. 이전 1 ··· 5 6 7 8 9 10 다음