스프링 핵심원리- 기본편 (김영한님) 수업을 듣고 정리한 글입니다.
1. 프로젝트 생성하기
스프링 안쓰고 우선 java로만 작성할 예정이다(스프링은 나중에)
완전 기본세팅
인텔리제이로 열기
settings 바꾸기
비지니스 요구사항과 설계
도메인 설계
클래스 다이어그램은 정적, 객체 다이어그램은 프로그램 실행시 관계이므로 동적
entity 작성
Grade 만들기
enum: 열거형 https://boycoding.tistory.com/179
Member 엔티티 만들기
Constructor와 getter and setter 만든다.
저장소 만들기
인터페이스 만들기
구현체 만들기
java map 사용법
put : (key, value)쌍 추가, get : key로 value 얻기
https://devlogofchris.tistory.com/41
서비스 만들기
인터페이스 만들기
구현체 만들기
테스트 만들기
순수한 자바코드만으로 테스트해보면,
큰 메소드일 경우에 이런식의 테스트는 한계점이 있다.
JUnit을 이용한 테스트코드를 작성하자.
JUnit 이용한 테스트
오류를 콘솔 글씨로 비교하여 아는것이 아닌 직접 비교를 해주고 틀리면 어디가 틀렸고 어떤 값이 와야하는지까지 알려준다.
테스트 코드를 잘 작성하는 것이 중요하다.😊
이 코드의 문제점
DIP 원칙을 지키지 않았다.
추상화에도 의존하지만 구체화에도 의존한다(인터페이스가 아닌 구현체에 의존(사용))
주문과 할인 도메인 설계
할인 여부를 할인 정책에 위임하므로 할인 정도가 바뀌어도 구현체만 바꾸면 된다!
클래스 다이어그램
서비스에 대한 구현체가 하나일때 ~서비스Impl로 쓴다.
주문과 할인 도메인 개발
할인 정책 만들기
인터페이스 만들기
구현체 만들기
주문 entity 만들기
toString함수 추가, 객체를 보기쉽게 출력해준다. order 출력시에 이 함수가 호출된다.
주문 서비스 만들기
인터페이스 만들기
구현체 만들기
MemberRepository와 DiscountPolicy가 필요하다.
주문 테스트하기
java 코드로 테스트하기
JUnit 테스트
테스트에 모두 통과했다.
단축키
- soutv : value 출력
- psvm: public static void main
- f2: 오류난 곳으로 바로 이동
'Spring > 스프링 핵심 원리' 카테고리의 다른 글
싱글톤 컨테이너 (0) | 2023.02.13 |
---|---|
스프링으로 전환하기, 스프링 컨테이너와 스프링 빈 (0) | 2023.02.13 |
IoC, DI, 컨테이너 (0) | 2023.02.03 |
예제에 객체 지향 원리(SOLID) 적용 (Only java) (0) | 2023.02.03 |
객체 지향 설계와 Spring (2) | 2023.01.28 |