들어가기 앞서
모두 5주차 스터디도 들으시느라 수고 많으셨습니다
이번 스터디에서는 레포지토리 계층의 기능을 사용하여 어플리케이션의 비즈니스 로직을 실제로 풀어내는 서비스 계층을 작성하였습니다.
스터디에서 말씀드린 것처럼, 서비스 계층은 내가 어떻게 정책을 정하는 지에 따라 기능이 달라지고, 어플리케이션의 핵심 로직이 담기는 부분이기 때문에, 프로젝트를 하신다면 제일 신경써서 구현해야 하는 계층이기도 합니다.
이번 주 과제는 오늘 스터디에서 작성한 Todo 외에 Member, Friend 와 같이 과제를 구현하면서 만드신 나머지 도메인의 서비스 계층을 작성하시는 것이 과제입니다.
이때 프로젝트 명세에 없는 부분은 자유롭게 정책을 정해서 구현해주시면 됩니다.
예를 들어 비밀번호에 특수기호가 포함되어야 하고, 길이가 8글자 이상이어야 한다면, 멤버 데이터를 저장하기 전에 프론트가 보내준 데이터가 형식에 맞는지 검사를 하고 적절한 예외를 발생시킬 수 있습니다. (7회차 스터디에서 DTO 클래스에 유효성 검사를 추가하면서 이와 관련하여 간단하게 처리하는 방법도 알아봅니다)
또 스터디에서 직접 구현하지는 않았지만 할 일을 수정, 삭제하기 전에 이 할 일을 수정, 삭제하려는 유저가 그 일을 만든 유저인지 검사 해보셔도 좋습니다.
이 과정에서 기존의 레포지토리 코드를 사용하시기 편하게 수정하셔도 좋고, 레포지토리 코드를 추가하셔도 좋습니다!
단위 테스트의 경우, 내가 작성한 비스니스 로직의 핵심적인 부분들 위주로 작성하시면 됩니다. (특히 특정 상황에서 실패해야 하는 경우는 올바르게 실패하는지 꼭 테스트로 검증하시기를 추천드립니다!)
테스트 코드를 작성하는 건 귀찮고 번거롭지만, 나중에 새로운 기능이 추가되고 어플리케이션이 점점 복잡해질 때, 기존의 기능이 그대로 잘 작동한다는 것을 간단하게 테스트 실행 한번으로 확인할 수 있어서 매우 유용합니다. (요즘은 AI 도움을 받아서 자동으로 테스트를 작성하기도 한대요.)
과제
목표
•
서비스 계층 작성하기
•
서비스 계층 단위 테스트 작성하기
제출해야할 파일과 파일 경로
1.
2.
서비스 계층 작성 (폴더 구조 예시 참고)
3.
서비스 계층 단위 테스트 작성 (폴더 구조 예시 참고)
week8/
└── wil.md
todoapi/
└── main/
└──── java/
└────── com.example.todoapi/
└──────── todo/
└────────── Todo.java
└────────── TodoRepository.java
└────────── TodoService.java
└──────── member/
└────────── Member.java
└────────── MemberRepository.java
└────────── MemberService.java
└────── ...
└── test/
└──── java/
└────── com.example.todoapi/
└──────── todo/
└────────── TodoRepositoryTest.java
└────────── TodoServiceTest.java
└──────── member/
└────────── MemberRepositoryTest.java
└────────── MemberServiceTest.java
└────── ...
YAML
복사
마감 기한
다음 스터디가 시작하는 11월 6일 수요일 자정까지 제출해주세요.
제출 방법
자신의 레포지토리에 week8 폴더를 생성해 wil.md 파일을 제출합니다.
더 자세한 사항은 아래 링크를 참조해주세요.