본문 바로가기

분류 전체보기220

[Pre-Project] Day 8 : JWT 이용한 로그인 및 권한 부여 프로젝트를 하는 과정에 있어서 기록하는 것이다. 잘못된 부분이나 수정이 필요한 부분은 꾸준히 수정할 예정이다. ✅ JWT (JSON Web Token) JWT를 이용하여 로그인 구현하려고 함 JWT Tokenizer 클래스를 만들어 Access Token과 Refresh Token 생성 권한을 부여하기 위해 User Role 생성 Login DTO 생성 Security Filter Chain을 이용해 JWT를 이용한 로그인 구현 antMatcher()을 이용하여, HttpMethod Role 제한 😵‍💫 과정에서 발생했던 문제 EndPoint를 '/users/{user_id}' 이런식으로 정했는데, antPatter에 '/*/users/**' 이렇게 설정해 준 것. 그래서 권한이 없음에도 계속해서 Get.. 2022. 10. 31.
20221028 데일리 회고 ✔️Date : 2022.10.28 FRI What did you do? ✅ Check Style Build Error : 흐헝.... 진짜 이거 때문에 아침 내내 .. 지우고 받고 지우고 받고 했다.. 괜히 하자고 했나 싶기도 하고... 진짜 많은 생각이 들었다. 왜 안되는지 찾다가 왜 리포트에 폴더가 안생기지 라는 의문에서 시작되어버린... 찾게되는 과정! 진짜 눈물날 뻔했다. 거짓말 안하고 진심으로 소리질렀다.. 요즘 미라클 모닝 하기로 해서 여덟시에 시작했는데,,,,,,!!!!!! 약 네시간 반을... 투자했기 때문이다. 근데 진짜 모든 단서는 에러메세지에 있었다. 알고보니 파일을 찾는 위치가 잘못...된것! 아니 그냥 빌드가 알아서 잘못 찾아간것! 그래서 그 위치로 내가 컨벤션 파일들을 옮겨주니.. 2022. 10. 28.
[Pre-Project] Day 7 : CheckStyle Convention Build 프로젝트를 하는 과정에 있어서 기록하는 것이다. 잘못된 부분이나 수정이 필요한 부분은 꾸준히 수정할 예정이다. ❗️만약 " A failure occurred while executing org.gradle.api.plugins.quality.internal.CheckstyleAction" , "Unable to create Root Module" 키워드로 검색해서 지금 포스팅에 들어왔다면 3️⃣ 확인 혹은 링크 클릭 ❗️ Intelli J 네이버 코딩 컨벤션 적용 및 Check Style Build 지난 프리 프로젝트를 하면서 프로젝트에 코딩 컨벤션을 적용하고, 빌드에 포함시키면서 작업을 하였다. 힘들기도 했지만, 깔끔하고 가독성이 좋게 코드가 정리가 되었던 경험이 좋았다. 해당 bhinney.tisto.. 2022. 10. 28.
20221027 데일리 회고 ✔️Date : 2022.10.27 THU What did you do? ✅ 연관관계 매핑 : 연관관계 매핑 과정에서 나도 이해가 많이 덜 되었었다. 그래서 같이하는 팀원 분께 설명을 하는 게 많이 모자랐다. 그래서 그만큼 정리하고 생각해보았다. 그러면서 나도 블로깅을 어떻게 해야할 지도 고민해 보았다. 그래서 정리가 많이 되어 주말 안에 블로깅을 하는 것이 목표이다. 나는 매핑을 할 때 주인관계를 생각하기 보다는 어떤 id를 FK로 만들어야하는지 혹은 어떤 id를 기준으로 참조가 되는 지를 생각하게 되는 것 같다. 그래서 주인관계에 대해 설명하라고 하면 그 부분은 많이 모자라다. 그 파트를 좀더 찾아서 공부하고 정리할 필요가 있다! 그리고 중요했던 부분은 유저와 추천한 게시물 사이의 관계였다. 만일 내.. 2022. 10. 28.
[Pre-Project] Day 6 : 연관관계 매핑 프로젝트를 하는 과정에 있어서 기록하는 것이다. 잘못된 부분이나 수정이 필요한 부분은 꾸준히 수정할 예정이다. 오늘은 사실 매핑에 조금 헷갈리고 어려워서 설명하고, 이해하고 하는데 시간을 많이 쏟았다. ✅ 연관관계 패핑 각 엔티티 테이블 간의 참조를 위해 매핑을 하였다. 테이블과 테이블 사이의 관계성을 생각하는게 어려웠다. User : Question = 1 : N User : Answer = 1 : N User : QuestionVote = 1 : N User : AnswerVote = 1 : N Question : Answer = 1 : N Question : QuestionVote = 1 : 1 1 : N 으로 보고 재 매핑하기로 했다. 하나의 질문의 여러 추천이 되는데 참조가 필요한 부분이 있기 .. 2022. 10. 28.
[Spring] 예외 처리 - 사용자 정의 ✔️ 사용자가 만들어 사용해야하는 경우가 존재한다 해당 내용도 계속해서 수정할 예정이다. ✅ 사용자 정의 예외처리 방법 1️⃣ 사용자 정의 예외를 위한 이넘 클래스를 만들어준다. import lombok.Getter; public enum ExceptionCode { MEMBER_NOT_FOUND(404, "Member Not Found"); @Getter private int status; @Getter private String message; ExceptionCode(int status, String message) { this.status = status; this.message = message; } } 2️⃣ RuntimeException을 상속 받은 BusinessLogicException을.. 2022. 10. 27.
[Spring] 예외처리 - 공통화(@RestControllerAdvice) ❗️직전에 포스팅한 내용처럼 예외를 처리하면 문제가 발생하기 때문에, 예외를 공통으로 처리하려고 한다.❗️ [Spring] 예외 처리 - Controller에서 처리 ❗️여기는 예외 처리를 Controller에서 해본 것이다. ❗️ 이렇게 유효성 검증과 같이 잘못된 요청이 들어가면 에러가 발생합니다. 이 때, 이 에러가 왜 발생했는지 위의 사진에서는 알 수 없다. bhinney.tistory.com ✅ @ControllerAdvice @ExceptionHandler, @InitBinder, @ModelAttribute가 적용된 메서드들에 AOP를 적용해 Controller에 적용하기 위해 고안된 어노테이션 클래스에 선언 + 전역적으로 발생하는 예외를 잡아서 처리할 수 있다. @Component 어노테이션.. 2022. 10. 27.
[Spring] 예외 처리 - Controller에서 처리 ❗️여기는 예외 처리를 Controller에서 해본 것이다. ❗️ 이렇게 유효성 검증과 같이 잘못된 요청이 들어가면 에러가 발생합니다. 이 때, 이 에러가 왜 발생했는지 위의 사진에서는 알 수 없다. 이러한 에러메세지를 조금 더 구체적으로 알 수 있도록 예외 처리를 하려고 한다. 예외 처리를 하는 방법은 여러가지가 있다. 메서드 내에서 예외 사항을 예측하여 처리하는 try-catch문 이용 요구사항에 의한 예외 처리 Spring Security에서 인터셉터로 잡아서 UnauthorizedException 같은 예외 처리 하지만 이런식으로 예외 처리를 여러 개 만들면 만들 수록 유지 보수가 어렵다. 이러한 부분을 개선하기 위해서 어노테이션을 이용한 예외처리를 하려고 한다. ✅ @ExceptionHandle.. 2022. 10. 27.
20221026 데일리 회고 ✔️Date : 2022.10.26 WED What did you do? ✅ 깃 문제 해결 + 체크포인트 문제 : 시작부터 오늘의 메인이자 하이라이트... Git flow가 꼬였다..! 플젝 기록에도 남겼지만, main브랜치에서 dev 브랜치 동기화가 안되어 문제가 발생했다. 이 이유는 dev-be 브랜치가 main에 초기설정 커밋하기 전에 나뉘어진 브랜치이기 때문이다. 그래서 dev-be로 커밋하고 머지했어야 했는데, 메인으로 가서 꼬인 것이었다. 근데 이것을 발견을 아침에....한.... PR 날리기 전에 확인하고 폴더 밀고 다시 작업해서 PR을 날렸는데... 왜 그대로.....😱 그래서 다시 싹 밀고 클론 받은 후, 혹시나 하는 마음으로 Pull을 한 번 더 해주고 그 이후에 브랜치를 나누고 다시 .. 2022. 10. 26.
[Pre-Project] Day 5 : Git Flow 꼬임, Check Point 미적용, User 프로젝트를 하는 과정에 있어서 기록하는 것이다. 잘못된 부분이나 수정이 필요한 부분은 꾸준히 수정할 예정이다. 🚨 Git Flow 꼬임 문제 : 백엔드 초기 설정 파일이 main으로 merge된 이후, dev-be 파일로 동기화가 되지 않았다. 해결 : main의 변화를 dev-be로 merge + 이전에 날린 PR 기록 close. ✔️ Check 1️⃣ 항상 먼저 dev-be 브랜치 상태를 확인하기! 👉🏻 이걸 확인하지 못해서 main과 dev-be가 동기화 되지 않아, 이후 문제 발생 😭 때문에 충돌...문제도 발생하고, 동기화가 되지 못함!! 2️⃣ dev-be 브랜치를 pull 하고 그 이후에 branch 생성해서 이동 후 작업! 3️⃣ merge 하지 않고 branch 이동을 했는데, 이전의 .. 2022. 10. 26.
20221025 데일리 회고 ✔️Date : 2022.10.25 TUE What did you do? ✅ ERD 및 테이블 명세서 작성 : ERD를 작성하고, 테이블 명세서를 작성하였다. 작성하고 보니 확실히 도움이 되었다. 예전에는 그저 머리 속으로 필요한 것을 생각하고 제약 조건을 생각했다면, 문서로 작성하니 확실히 틀이 존재했고 이후에 코드를 작성할 때에도 도움이 되었다. 이 ERD와 테이블 명세서를 바탕으로 Entity Class를 구현했기 때문이다. 여러 명이서 프로젝트를 작업할 때, 문서화 되어있는 틀이 있으면 얼마나 도움이 되는지 알게 되었다. 또 굳이 여러명이 아니고 나 혼자 무언가를 복습하고 만들어 볼 때에도 이렇게 문서로 작성하면 굉장히 도움이 될 것 같았다. 이게 최종이 아니고 꾸준히 수정해나아가겠지만, 그래도 .. 2022. 10. 25.
[Pre-Project] Day 4 : ERD 작성, 테이블 명세서 작성, API 명세서 작성 프로젝트를 하는 과정에 있어서 기록하는 것이다. 잘못된 부분이나 수정이 필요한 부분은 꾸준히 수정할 예정이다. ✅ ERD 작성 ERD : Entity Relationship Diagram 테이블 간의 관계를 설명해주는 다이어그램 프로젝트에서 DB의 구조를 한눈에 파악 가능 ✔️프로젝트 ERD 작성 엔티티 별로 Master Table 생성 -> Users, Questions, Answers, Comments 각 엔티티 안에 들어갈 필드 정리 구현에 필요한 Table 생성 -> Questions_Vote, Answers_Vote 각 테이블 별로 연관관계 표시 ✅ 테이블 명세서 작성 테이블과 인덱스를 데이터베이스 공간에 맵핑시키고 저장공간 등의 물리 모델을 기술 서비스에서 사용될 테이블을 미리 설계하고 그 내.. 2022. 10. 25.