Service
home
WOW Onboarding
home

[백엔드 정규 스터디 5주차 과제]

들어가기 앞서

강의 영상과 강의록

5주차 강의록.pdf
48.9 MiB
안녕하세요, 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분까지 제출해주세요!

제출 방법