내일배움캠프(111)
-
[내일배움캠프] TIL - 24.10.15(화)
'도전 기능' 에 대한 요구사항까지 어제 다 반영을 하였다. 하지만 '도전 기능' 의 핵심 요구사항만 반영했기에 오늘은 리팩토링을 진행하며 동시에 반영하지 못한 세부 요구사항들을 함께 반영했다.필터 예외처리 반영Member CRUD 및 로그인/로그아웃 수정이후로는 Schedule CRUD 를 수정하고 JWT 재발급을 위한 RefreshToken CRUD 를 작성한 뒤 과제를 제출할 것 같다. ※ 참고 : 나는 TIL 작성 방식을 내가 학습하며 정리한 다른 게시글들과 하이퍼링크를 거는 방식으로 작성하였다. 학습한 내용에 하이퍼링크를 걸어두었으니 해당 링크를 통해 학습을 정리한 내용에 접근할 수 있다.
2024.10.15 -
[일정 관리 앱] 리팩토링(2)
이번에는 '유저(멤버)' 엔티티를 다루는 요청에 대한 모든 부분을 하나씩 확인하며 수정해 보려한다. 수정은 요청시 '인증 필요' 의 유무로 구분지어 나누어 진행했다. 이번 리팩토링을 통해 수정된 코드는 여기서 확인 가능하다.인증 불필요 : 회원 가입, 로그인인증 필요 : 그 외 모든 기능과제의 요구사항에 따라 위와 같이 구분짓게 되었다. 1. 인증이 불필요한 요청 아래의 요청들은 필터에서 인증/인가를 수행하지 않고 곧장 'MemberController' 에 'ServletRequest, ServletResponse' 를 전달하게 된다. 1-1. 회원 가입 '회원 가입' 에는 회원(유저)의 '이름, 이메일(계정 ID), 비밀번호(계정 비밀번호)' 정보를 전달 받아야 한다. 전달받은 정보로 새로운 회원에 대..
2024.10.15 -
[일정 관리 앱] 리팩토링(1)
이전 게시물에서 말한 것 처럼 현재 모든 요구사항을 반영한 것이 아니다 '도전 기능' 에 해당하는 '세부 요구사항' 을 반영하지 않았기에 해당 요구사항들을 반영하면서 리팩토링을 진행해보려 한다. 과제 제출 전까지 진행할 리팩토링 순서는 아래와 같다.필터(인증/인가) → 유저(멤버) → 일정 → 나머지 엔티티기본적으로 적절한 클래스명, 메서드명, 변수명으로 수정 및 비즈니스 로직 수정이번 게시글에서는 '필터' 에 초점을 맞춰 리팩토링을 진행하려 한다. 이번 리팩토링으로 인해 수정된 코드는 여기서 확인이 가능하다. 1. 필터 필터를 사용하니 비즈니스 로직에서 '인증/인가' 를 분리할 수 있었다. 이번 프로젝트에서의 인증, 인가에 대한 예시는 아래와 같다.인증 : 일정을 생성하는 것은 회원(멤버)만이 가능하다..
2024.10.15 -
[일정 관리 앱] 도전 기능 요구사항 반영
과제의 요구사항 중 '도전 기능' 에 대한 프로젝트 반영을 끝내고(핵심 요구사항만) 요구사항 반영간 있었던 이슈에 대해서 작성해보고자 한다. 참고로 현재 '도전 기능' 의 모든 요구사항을 반영한 것은 아니다. 요구사항 중 핵심 요구사항을 반영하고 테스트한 상태라 세부 요구사항에 대한 부분은 리팩토링을 진행하면서 반영할 생각이다. 각 요구사항을 반영하며 작성한 코드는 아래의 링크를 통해 확인할 수 있다.도전 기능(Level.01 , 전체기준 Level.06)도전 기능(Level.02~03 , 전체기준 Level.07~08) 도전 기능(Level.04, 전체기준 Level.09) 1. JWT 검증시 발생하는 예외 강의 및 검색을 통해 JWT 에 대한 구현을 진행하면서 JWT 검증에 아래와 같은 코드를 참고해..
2024.10.14 -
[일정 관리 앱] N : M(다대다) 관계 풀어내기
Lv.4 요구사항은 단순하게 보면 '유저' 정보를 갖는 엔티티를 추가하는 것이다. 하지만 세부 요구사항을 보면 'N : M' 관계에 대해 더 집중해야 함을 예상할 수 있었다. 1. ERD간략하게 요구사항을 정리하면 '유저' 엔티티가 추가되며 '일정' 엔티티는 작성자에 대한 정보로 '유저' 엔티티의 식별자 값을 가져야 한다. 더불어 일정 생성시 작성자(유저)는 일정을 관리(담당)해 줄 '관리자' 를 설정할 수 있어야 한다.한 명의 유저는 여러개의 일정을 작성 가능 - "유저 엔티티 : 일정 엔티티 = 1 : N"하나의 일정에 여러명의 일정 관리자(=유저)를 지정 가능 - "일정 엔티티 : 유저 엔티티 = 1 : N"즉, 유저 엔티티와 일정 엔티티는 'N : M(다대다)' 관계를 맺어야 하는 것이다. 솔직히..
2024.10.12 -
[일정 관리 앱] 기묘한 모험 - 1 : N 관계에서의 전체 조회
이번에는 '1 : N 관계' 에서의 '전체(목록) 조회를 구현하면서 겪은 기묘한 모험담(?) 을 기록해보려 한다. 이번 뿐만 아니라 이후 프로젝트 또는 실무에서도 충분히 겪을 수 있는 상황이라 생각해 기록하게 되었다. 이번에 작성한 코드는 여기서 확인할 수 있다. 먼저 현재 프로젝트는 'Spring Data JPA' 를 활용한 프로젝트이기에 최대한 'JPA' 를 활용하는 목적을 가지고 있다. 프로젝트 진행 중 'Lv.3 요구사항 - 페이지네이션' 을 반영하게 되며 문제가 연이어 터지게 되었다. 여기서 말하는 요구사항은 '일정 엔티티' 가 '댓글 엔티티' 와 '1 : N' 관계를 가져야하고, '일정' 을 전체(목록) 조회를 할 때 일정의 정보와 일정이 갖는 댓글 엔티티 개수를 반환해야 한다는 내용이다. 또..
2024.10.11