들어가기 앞서
강의 영상과 강의록
안녕하세요, 5주차 멘토 박유정입니다
지난 4주 동안 저희는 쇼핑몰 프로젝트를 직접 구현해오며
어떻게 코드를 구성하고 기능을 만들어가는지를 알아봤는데요,
이번 주차에서는 그 과정 속에서 자연스럽게 사용해왔던 Spring의 핵심 개념들을 다시 한번 정리하고,
객체지향적으로 더 좋은 코드를 작성하는 방법을 다뤄보았습니다.
5주차 핵심 키워드
아래 세 가지 키워드를 중심으로 강의 내용을 복습하고 정리해 보시는 것을 추천합니다.
•
SOLID 원칙 - 좋은 객체 지향 설계를 위한 5가지 원칙
•
IoC (Inversion of Control) - 객체의 생성 및 관리를 프레임워크가 담당하는 것
•
DI (Dependency Injection) - 의존하는 객체를 외부에서 주입받는 것
스프링을 제대로 이해하기 위해 정말 중요한 개념들이니, 강의 내용 이외에도 더 깊게 찾아보시면 좋을 것 같습니다.
강의나 과제 중 궁금하거나 막히는 부분이 있다면, 디스코드 채널 #백엔드-정규-스터디 또는 디스코드 개인 DM(유정)으로 편하게 연락 주세요!
실습 코드
MemoryMemberRepository
참고용 깃허브
과제
목표
•
SOLID원칙을 적용하여 프로젝트 리팩토링 하기
•
강의 내용 요약 정리하기(wil.md)
SOLID 원칙 적용해서 리팩토링 하기
강의에서 Member 도메인을 리팩토링하면서
인터페이스와 구현체로 분리하고,
각 계층이 인터페이스에만 의존하도록 구조를 개선한 뒤,
구현체는 스프링의 DI를 통해 외부에서 주입받는 형태로 바꿨습니다.
Product와 Order 도메인도 SOLID 원칙을 적용하여 더 유연하고 확장성이 뛰어난 코드로 리팩토링해 봅시다!
강의 내용 정리
5주차 강의 내용을 week5/wil.md에 정리해주세요.
제출해야 할 파일과 파일 경로
•
아래 구조는 제가 작성한 예시로, 꼭 똑같이 하실 필요 없습니다.
•
여러분이 여태까지 구현해오신 코드를 기반으로 리팩토링 해주시면 됩니다.
week5/
└── wil.md
shop/
└── src/
├── main/
│ ├── java/
│ │ └── com.example.shop
│ │ ├── bean
│ │ │ └── MyBean.java
│ │ │
│ │ ├── member
│ │ │ ├── controller
│ │ │ │ └── MemberController.java
│ │ │ ├── service
│ │ │ │ ├── MemberService.java
│ │ │ │ └── MemberServiceImpl.java
│ │ │ ├── repository
│ │ │ │ ├── MemberRepository.java
│ │ │ │ ├── JpaMemberRepository.java
│ │ │ │ └── MemoryMemberRepository.java
│ │ │ └── entity
│ │ │ └── Member.java
│ │ │
│ │ ├── product
│ │ │ ├── controller
│ │ │ │ └── ProductController.java
│ │ │ ├── service
│ │ │ │ ├── ProductService.java // 인터페이스
│ │ │ │ └── ProductServiceImpl.java // 구현체
│ │ │ ├── repository
│ │ │ │ ├── ProductRepository.java // 인터페이스
│ │ │ │ └── JpaProductRepository.java // 구현체
│ │ │ └── entity
│ │ │ └── Product.java
│ │ │
│ │ └── order
│ │ ├── controller
│ │ │ └── OrderController.java
│ │ ├── service
│ │ │ ├── OrderService.java
│ │ │ └── OrderServiceImpl.java
│ │ ├── repository
│ │ │ ├── OrderRepository.java
│ │ │ └── JpaOrderRepository.java
│ │ └── entity
│ │ └── Order.java
│ │
│ └── resources/
│ └── application.yml
│
└── test/
└── java/
└── com.example.shop
├── ShopApplicationTests.java
│
└── bean
├── BeanTest.java
└── TestConfig.java
YAML
복사
마감 기한
11월 19일 (수) 23시 59분까지 제출해주세요!
제출 방법
자신의 레포지토리에 week5 폴더를 생성해 wil.md 파일을 제출합니다.
더 자세한 사항은 아래 링크를 참조해주세요.
