Spring/SpringCore 10

스프링 핵심 원리 이해1 - 주문과 할인 도메인 실행과 테스트

OrderApp class를 먼저 만들어 준다. // OrderApp class package hello.core; import hello.core.member.Grade; import hello.core.member.Member; import hello.core.member.MemberService; import hello.core.member.MemberServiceImpl; import hello.core.order.Order; import hello.core.order.OrderService; import hello.core.order.OrderServiceImpl; public class OrderApp { public static void main(String[] args) { MemberSe..

Spring/SpringCore 2022.03.24

스프링 핵심 원리 이해1 - 주문과 할인 도메인 개발

hello.core 밑에 discount 패키지를 만들고 DiscountPolicy라는 interface를 만든다. // DiscountPolicy interface package hello.core.discount; import hello.core.member.Member; public interface DiscountPolicy { /** * @return 할인 대상 금액 */ int discount(Member member, int price); } 이거에 대한 구현체도 만들어 준다. // FixDiscountPolicy package hello.core.discount; import hello.core.member.Grade; import hello.core.member.Member; public..

Spring/SpringCore 2022.03.24

스프링 핵심 원리 이해1 - 주문과 할인 도메인 설계

주문과 할인 정책 회원은 상품을 주문할 수 있다. 회원 등급에 따라 할인 정책을 적용할 수 있다. 할인 정책은 모든 VIP는 1000원을 할인해주는 고정 금액 할인을 적용해달라. (나중에 변경 될 수 있다.) 할인 정책은 변경 가능성이 높다. 회사의 기본 할인 정책을 아직 정하지 못했고, 오픈 직전까지 고민을 미루고 싶다. 최악의 경우 할인을 적용하지 않을 수 도 있다. (미확정) 클라이언트가 주문 서비스에 제일 먼저 요청을 한다. 예제에서는 상품이라는 item대신 상품명 / 상품 가격을 넘겨주었다. 주문 서비스는 단순히 주문 결과 객체를 만들고 난 후 클라이언트에게 보내는것까지만 적용(실제 DB에 저장하는 것은 생략) 1. 주문 생성: 클라이언트는 주문 서비스에 주문 생성을 요청한다. // Findby..

Spring/SpringCore 2022.03.24

스프링 핵심 원리 이해1 - 회원 도메인 실행과 테스트

이제 실제 동작하는지 실행하고 테스트를 해보자. hello.core 하위 객체에 MemberAPP을 만든다. 순수한 자바코드로 작성 // MemberApp package hello.core; import hello.core.member.Grade; import hello.core.member.Member; import hello.core.member.MemberService; import hello.core.member.MemberServiceImpl; public class MemberApp { // psvm = public static void main을 이용하자. / command option v도 활용 public static void main(String[] args) { MemberServic..

Spring/SpringCore 2022.03.24

스프링 핵심 원리 이해1 - 회원 도메인 설계

도메인 설계를 해보자 클라이언트가 회원서비스를 호출한다. - 회원 서비스는 두 가지 기능이 있다 - 회원 저장소도 별도로 만들어 준다. 즉 회원데이터에 접근하는 계층을 따로 만들어 주는 것이다.(회원 저장소라는 인터페이스를 만들어 준다.) 회원 저장소의 구현은 메모리 회원 저장소 DB 회원 저장소 외부 시스템 연동 회원 저장소로 나누어 준다. 일단은 메모리 회원 저장소를 자바코드로 작성을 해준다.(테스트 할 때도 쓰이고 로컬에서 개발할 때도 쓰임) 재부팅을 하면 => 데이터가 다 날라간다. 즉 개발용으로만 쓴다. 회원 서비스의 구현체를 MemberServiceImpl로 구현을 해준다. MemberRepository의 구현 클래스로 MemoryMemberRepository / DbMemberReposito..

Spring/SpringCore 2022.03.24

스프링 핵심 원리 이해1 - 비즈니스 요구사항 설계

회원 주문 할인정책 세 가지 요구사항이 있다. 각각의 요구사항을 살펴보자. 회원 데이터는 자체 DB를 구축할 수 있고, 외부 시스템과 연동할 수 있다. => 즉 자체 DB를 구축할 수 있고 외주를 주거나 사내에 있는 시스템에서 만들어 둔 회원 시스템을 그대로 활용할 수 있다.(아직은 미확정인 상태) 앞에서 배운 객체 지향 설계 방법 즉 역할과 구현을 나누고 인터페이스와 구현객체를 하는 부분을 생각하면서 진행하면서 인터페이스를 만들고 구현체를 언제든지 갈아끼울 수 있도록 설계해본다. 이제 프로젝트를 시작해보자. 참고: 프로젝트 환경설정을 편리하게 하려고 스프링 부트를 사용한 것이다. 지금은 스프링 없는 순수한 자바로만 개발을 진행한다는 점을 꼭 기억! 스프링 관련은 한참 뒤에 등장한다. https://ww..

Spring/SpringCore 2022.03.24

스프링 핵심 원리 이해1 - 프로젝트 생성

일단 순수하게 자바로만 작성하여 간단한 예제를 만들어보자. 여기에서 프로젝트 생성 Gradle Project Spring boot version 선택(snapshot / m 제외) Project Metadata는 아래와 같이 Group : hello Artifact: core packaging : jar JAVA 11 version Dependencies에서 아무거도 선택하지 않으면 스프링 부트가 코어쪽에 라이브러리 몇개만 구성을 해준다. (즉 별도의 의존관계 설정 x) Generate하고 압축 풀고 압축푼 파일에서 build.gradle파일을 open - open as a project package hello.core; import hello.core.member.Grade; import hello...

Spring/SpringCore 2022.03.23

좋은 객체 지향 프로그래밍

객체 지향 특징 추상화 캡슐화 상속 다형성 다형성의 실세계 비유 실세계와 객체 지향을 1:1로 매칭 x 그래도 실세계의 비유로 이해는 해보자. 역할과 구현으로 구분 => 운전자 - 자동차 공연 무대 키보드(ex 기계식 쓰다가 리얼포스 무접점 키보드 씀), 마우스 세상의 표준 인터페이스들 정렬 알고리즘 할인 정책 로직 역할과 구현을 분리 역할과 구현 구분하면 세상이 단순, 유연 변경도 편리해진다. 장점 클라이언트는 대상의 역할(인터페이스)만 알면 된다. 클라이언트는 구현 대상의 내부 구조 몰라도 된다. 클라이언트는 대상의 내부 구조가 변경되도 영향을 받지 않는다. 클라이언트는 대상 자체를 변경해도 영항을 안받는다.(소유한 차가 k3에서 테슬라 , 테슬라에서 k3 바꿔도 세상은 변하지 않음) 즉 자바언어에서..

Spring/SpringCore 2022.03.23

스프링 DB 접근 기술 - 스프링 데이터 JPA error

각 파일에 clearStore 부분을 없애준다. // MemberRepository interface(src - repository폴더) package hello.hellospring.repository; import hello.hellospring.domain.Member; import java.util.List; import java.util.Optional; public interface MemberRepository { Member save(Member member); Optional findById(Long id); Optional findByName(String name); List findAll(); } // JpaMemberRepository package hello.hellospring...

Spring/SpringCore 2022.03.23

스프링 DB 접근 기술 - H2 데이터베이스 설치

h2 데이터베이스를 설치를 해보자. 여기 클릭 링크에 들어가서 1.4.200 버전을 설치한다. 터미널에서 아래와 같이 명령어를 쳐준다. // h2 폴더로 이동 open . ls cd bin // Mac에서 실행권한을 주기 위해서 아래 명령어를 입력 chmod 755 h2.sh ./h2.sh 아래와 같이 h2 데이터베이스가 뜨게 된다. JDBD URL의 ~/test는 home에 있는 test 폴더 경로를 의미한다. 그대로 connect를 시켜주면 아래와 같이 뜨게 된다. 좌측 상단을 클릭하면 나갈 수 있게 된다. terminal창에서 home directory를 가보자. 파일 목록들을 보게 되면 test.mv.db가 있다. 이 파일은 꼭 있어야 한다. 이제부터 접속을 할 때는 파일로 접근하지 말고(동시에 ..

Spring/SpringCore 2022.03.22