개인과제(54)
-
[Spring Plus] Level 1-2 요구사항 반영
'Level 1-2' 의 요구사항을 반영한 내용을 기록한 포스팅이다. 어떠한 생각과 과정을 통해 요구사항을 반영했는지 알 수 있도록 작성해 보았다. 0. 요구사항 기획자의 요청을 현재 프로젝트에 반영해야 한다. 전달 받은 요청은 JWT 에 사용자 닉네임 정보를 담아 프론트 쪽에서 이를 꺼내 화면에 보여주길 원한다는 것이다. 1. 사용자 닉네임 추가1-1. User 클래스 필드 추가 일단 JWT 에 사용자의 닉네임 정보를 담고 싶다면 User 클래스와 매핑된 테이블에 닉네임 정보를 가질 필드 및 컬럼을 아래와 같이 추가할 필요가 있다 생각했다.@Getter@Entity@NoArgsConstructor@Table(name = "users")public class User extends Timestamped..
2024.11.12 -
[Spring Plus] Level 1-1 요구사항 반영
'Level 1-1' 의 요구사항을 반영한 내용을 기록한 포스팅이다. 어떠한 생각과 과정을 통해 요구사항을 반영했는지 알 수 있도록 작성해 보았다. 0. 요구사항 현재 'API(POST /todos)' 를 요청할 경우 아래와 같은 에러가 발생하고 있다.jakarta.servlet.ServletException: Request processing failed: org.springframework.orm.jpa.JpaSystemException: could not execute statement [Connection is read-only. Queries leading to data modification are not allowed] [insert into todos (contents,created_at,..
2024.11.11 -
[Spring Plus] 5분 기록 테이블
이번 개인과의 5분 기록 테이블을 작성한다. 프로젝트의 성격에 맞추어 테이블에는 아래와 같은 정보를 작성한다.단계 : 작업한 요구사항의 Level(단계) 정보 작성요구사항 : 작업한 요구사항의 간략한 정보를 작성분류 : 구현, 트러블 슈팅 등 작업의 목적을 작성날짜 : 작업 날짜 작성링크 : 작업한 내용에 대한 블로그 게시물 또는 Github 커밋 내역을 링크단계요구사항분류날짜링크1-1'API(/todos)' 호출 시 발생 에러 해결트러블슈팅2024.11.11블로그1-2'User' 클래스 'nickname' 필드 추가 및 'JWT' 사용자 별명 정보 삽입코드수정2024.11.12블로그1-3'AdminAccessLoggingAspect.logAfterChangeUserRole()' 이 원래 의도대로 동작하..
2024.11.11 -
[일정 관리 앱] 피드백 반영(2)
해당 프로젝트에 LoggingFilter 를 구현해 두었지만 이를 제대로 사용하지 못하고 있다는 피드백을 받아 해당 필터를 수정해 보았다. 기존에는 요청 URL 과 요청이 수행되고 나서 완료 메시지만을 로그로 남겼다면 수정을 통해 요청 정보(Request Header, Parameter, Body)와 응답 정보(HttpStatus, Response Body)를 로그로 남겨보았다. 0. 요청/응답 정보에 대한 로그를 Filter 에서 남긴 이유 처음에는 "그냥 적절한 곳에 로그를 남기면 되지 않을까?" 라는 생각만 있었지만 LoggingFilter 를 수정해보면서 "요청을 가장 먼저 마주하는 곳과 응답을 가장 마지막에 마주하는 곳이 Filter(프로젝트에서는 LoggingFilter)이니 여기서 로깅을 하..
2024.10.29 -
[일정 관리 앱] 피드백 반영(1)
과제 제출후 받은 피드백 내용들을 프로젝트에 반영하며 기록을 남겨본다. 1. 명확한 클래스 네이밍 이 부분은 인지하고 있었으나 섬세함이 부족해 피드백을 통해 수정을 권유받았다. 과제 요구사항 중 'Open API' 사용을 반영하기 위해 사용한 RestTemplate 객체를 빈으로 등록하기 위해 Config 클래스에 RestTemplate 객체를 생성하는 메서드를 구현해 놓았다. 하지만 이는 Config 라는 클래스의 이름만으로 어떤 '구성' 을 위한 코드가 클래스에 작성되어 있을지 알기 어렵다. 그래서 아래와 같이 Config 라는 기존의 클래스명을 RestTemplateConfig 로 변경해 RestTemplate 구성과 관련된 내용이 해당 클래스에 있음을 '명시적' 으로 알 수 있도록 수정하였다.@C..
2024.10.28 -
[일정 관리 앱] 리팩토링(5)
마지막으로 댓글 관련 CRUD 를 리팩토링을 진행해 보려 한다. 댓글의 경우 댓글에 관련된 모든 요청에 인증이 필요하다. 하지만 그 외 요구사항에 크게 없어 스스로 판단해 반영한 내용이 다수 존재한다. 이번에 리팩토링한 코드는 여기서 확인이 가능하다. 0. Comment 엔티티 필드 변경 기존에는 작성자명(String author)을 사용했지만 이제는 작성자 ID(Long authorId) 를 저장하도록 수정하였다. 이렇게 변경한 이유는 댓글 삭제 및 수정시 대상 댓글을 작성한 회원만이 해당 댓글을 삭제/수정 할 수 있게 구현하다 보니 작성 회원이 맞는지 '검증' 이 필요했다. '검증' 에는 댓글 작성자의 'id' 와 요청 회원의 'id' 를 비교하는 방식을 사용하는 것이 적절하다 생각 필드를 수정하게 ..
2024.10.16