본문 바로가기

전체 글220

[Main Project] Day 5 + 주말 : 회원 관련 CRUD 구현, Rest Docs 시도... 본 글은 프로젝트를 기록하기 위해 적은 글 입니다. 수정이 될 수 있으며, 정확하지 않을 수 있습니다. ✅ 주말동안 한 일 📌 연관 관계 매핑 이번에는 많은 테이블이 연관이 되어있다. 그래서 해당 클래스들 중 현제 구현된 엔티티끼리 연관 관계 작업을 해주었다. 일대다, 일대일 매핑과 연관관계 편의 메서드를 사용하여 작업. 생각보다 저번 프리 때에 예시로 적어둔 글이 유용했다. 📌 회원 가입 구현 (Member Create) 입력 되는 권한에 따라 소비자와 판매자를 나눠 역할을 부여하였다. 나중에 시큐리티로 권한을 확인할 역할(roles) 외에 DB에 저장하는 역할도 role로 설정해주었다. 📌 판매자와 소비자의 정보 조회 구현 (Member Read) 판매자의 마이페이지와 소비자의 마이페이지를 조회하는 .. 2022. 11. 14.
[Main Project] Day 4 : API 명세서 작성 ,ERD 수정 최종(?), Entity 작업 본 글은 프로젝트를 기록하기 위해 적은 글 입니다. 수정이 될 수 있으며, 정확하지 않을 수 있습니다. ✅ API 명세서 작성 어제 만든 테이블과 프론트엔드의 피그마를 바탕으로 명세서를 다시 작성하기 시작했다. 엔드 포인트를 제대로 정해야 나중에 작업할 때 힘들지 않고, 응답 바디도 미리 알아야 제대로 줄 수 있기 때문이다. 하면서 하나 하나 짚어가면서 빠진 것과 논의할 부분들을 얘기하면서 하다보니 조금 시간이 오래 걸렸다. 혹시 우리가 너무 깊게 생각하는 건가.. 그래도 하다보니 마무리가 되었다..! (드디어!) 너무 디테일하게는 못하고 어느 정도의 선까지 작업을 하였다. 그리고 그 이후 변화가 필요하다면 상의를 통해 작업하기로 했다. ✅ ERD 수정 ... 다시 한 번 더 수정하였다. 연관 관계는 진.. 2022. 11. 11.
[Main Project] Day 3 : ERD 수정 및 멘토링 본 글은 프로젝트를 기록하기 위해 적은 글 입니다. 수정이 될 수 있으며, 정확하지 않을 수 있습니다. ✅ 다시 한 번 더 마이너스 API 명세서를 적다보니 수정해야할 부분이 많이 생겼다. 각 팀별로 상의도 하고 모여서 현실적으로 빼야 할 부분들을 정리했다. 장바구니, 체험 게시판은 우선 빼기로 결정하였다. 또한 소비자와 판매자 구분에 대한 이슈를 좀 더 상의해서 회원 가입 페이지는 하나지만 그 안에서 구분할 수 있도록 설계를 해볼 예정이다. ✅ ERD 수정 ERD 수정을 시작했는데, 갑자기 다시 작업하려나 사고회로가 그냥 정지되었다. 일차적으로 마이너스 작업을 바탕으로 수정하고, 멘토 님께 조언을 구한 후 최종 수정을 하였다. 하지만 작업 하면서 계속 변하지 않을까 한다. 우선 가장 큰 변화는 회원의 .. 2022. 11. 11.
[Main Project] Day 2 : 사용자 요구사항 정의서 및 ERD 본 글은 프로젝트를 기록하기 위해 적은 글 입니다. 수정이 될 수 있으며, 정확하지 않을 수 있습니다. ✅ 사용자 요구사항 정의서 프론트 엔드와 백 엔드 같이 사용자 요구사항 정의서를 작성하였다. 크게 필요한 클래스에서 세부적인걸 조금 나눠서 썼다. 거기서 하나씩 쓰면서 가능한 것과 CRUD는 기본적으로 상으로 배치하였다. 그리고 하면서 구현에 도전해 보겠으나 어려운 것들을 중이나 하로 배치하여 작업순위를 정하였다. 사용자 요구사항 정의서는 각자 프리 때 했던 것을 바탕으로 정리하였다. ✅ ERD 작성 사용자 요구사항 정의서를 바탕으로 ERD를 작성하였다. 이번에는 dbdiagram이 아닌 ERDCloud라는 프로그램을 이용하였다. dbdiagram보다 필드 내용을 더 정리된 형태로 볼 수 있었다. 또한.. 2022. 11. 10.
Intelli J 네이버 코딩 컨벤션 적용 및 Check Style Build 지난 프리 프로젝트를 하면서 프로젝트에 코딩 컨벤션을 적용하고, 빌드에 포함시키면서 작업을 하였다. 힘들기도 했지만, 깔끔하고 가독성이 좋게 코드가 정리가 되었던 경험이 좋았다. 해당 과정에서 알게 된 방법들을 정리하려고 한다. 📌 코딩 컨벤션 가독성이 좋고 관리하기 쉬운 코드를 작성하기 위한 코딩 스타일 규약 작성한 코드를 효율적으로 유지 보수 하기 위한 공통의 규칙 코딩 컨벤션을 준수하면 가독성이 좋아지고 성능에 영향을 주거나 오류를 발생시키는 잠재적인 요소를 줄여주어 유지 보수 비용 절감 📌 네이버 컨벤션 적용 네이버 핵데이 코딩 컨벤션 : https://naver.github.io/hackday-conventions-java/ 다운로드 : https://github.com/naver/hackday.. 2022. 11. 9.
[Main Project] Day 1 : Start❗️ 본 글은 프로젝트를 기록하기 위해 적은 글 입니다. 수정이 될 수 있으며, 정확하지 않을 수 있습니다. ✅ 팀 빌딩 팀원 구성 및 팀원 역할을 정하였다. 서기로 노션 페이지 관리하기로 결정. 해당 직업군에 맞추어 아이디어를 제시했다. 그리고 그 해당 아이디어에 맞추어 세부적인 의견들을 제시하여 정리하였다. 그리고 아이디어를 선택하였다. 🔥 내일 할 일 요구사항 정의서 작성 팀 별 회의 2022. 11. 9.
프리 프로젝트 회고 ✔️Date : 2022.10.20 ~ 2022.11.07 What did you do? ✅ Spring Security와 JWT를 이용하여 로그인 구현 : Spring Security와 JWT를 이용하여 로그인을 구현하였다. DB에 저장된 유저가 자신의 아이디와 비밀번호로 로그인을 하면, 헤더로 Access Token(Authorization)과 Refresh Token을 발급해주도록 설정하였다. 사실 토큰을 발급받고 흘러가는 흐름을 명확하고 정확하게 100프로 이해했다고 얘기하지는 못한다. 하지만 그래도 전보다는 그래도 어떻게 흘러가는 지는 느껴졌다. Security FilterChain을 이용하여 조금 쉽게 로그인 로직을 구현할 수 있었다. 중간 중간 커스텀이 필요한 부분은 직접 커스텀을 하면서 진.. 2022. 11. 8.
[Pre-Project] Day 13 : 헤더로 토큰 전달, 배포(실패😭) 프로젝트를 하는 과정에 있어서 기록하는 것이다. 본 글은 오늘이 마지막이다. ✅ 헤더 토큰 전달 JWT로 로그인을 구현한 후, 헤더로 Authorization과 Refresh Token을 전달하려고 했다. 그런데 헤더로 전달이 안되는 것... 그래서 찾아봤더니 해당 키는 따로 또 설정을 해줘야 한다고!! CORS 필터에 아래 두 코드를 추가해주었다. 아래 링크를 보고 알게 되었다. 참조 : https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Expose-Headers configuration.addExposedHeader("Authorization"); configuration.addExposedHeader("Refresh").. 2022. 11. 8.
[Pre-Project] Day 12 + 주말 : CORS 해결 및 유저 정보 판별 프로젝트를 하는 과정에 있어서 기록하는 것이다. 잘못된 부분이나 수정이 필요한 부분은 꾸준히 수정할 예정이다. ✅ CORS 해결 금요일부터 주말 내내 CORS 오류를 해결하려 했으나 해결하지 못했다. 거기에 플러스로 회원가입도 되지 않았다. @CrossOrigin 어노테이션도 붙여보고, 어트리뷰트도 다 넣어줘보았다. @CrossOrigin(origins = "*", allowedHeaders = "*", allowCredentials = "true", maxAge = 5000L) WebMvcConfig를 만들어 addMapping도 했으나 이 오류는 해결되지 않았다. 그리고 황당하게 찾은 이유.. OPTIONAL 메서드가 허용되어 있지 않았다. 해당을 추가해주고, 어노테이션을 주석처리하니 해결이 되었다... 2022. 11. 7.
[Pre-Project] Day 11 : SQL 데이터 넣기 프로젝트를 하는 과정에 있어서 기록하는 것이다. 잘못된 부분이나 수정이 필요한 부분은 꾸준히 수정할 예정이다. ✅ SQL 데이터 넣기 schema와 data 값을 미리 넣어두려고 하였다. 아무래도 이렇게 작업을 해두면 프론트 분들이 일일히 데이터를 넣지 않아도 된다고 생각했기 때문이다. JDBC에서는 별 문제 없었는데 JPA는 의외로 계속 어려웠다. (아직 실패중) 계속해서 오류가 나고 구글링을 따라해도 안되어서 새로 스프링 프로젝트를 만들어 보았다. 그랬더니 오류가 없이 계속 잘 됨... 이렇게 올리고 나서 데이터만 넣어보는건 되었다..! 근데 스키마는 그냥 create나 create-drop으로 해야할 거 같다. 내일까지 우선 도전 조금 더 찾아보고 내일까지 도전 해볼 것! 이게 안된다면 RDS에 저.. 2022. 11. 4.
[Pre-Project] Day 10 : OAuth2 구현해보기 및 MySql Update 프로젝트를 하는 과정에 있어서 기록하는 것이다. 잘못된 부분이나 수정이 필요한 부분은 꾸준히 수정할 예정이다. ✅ 데이터 입출력 확인 및 MySQL Update로 작업 확인 이제 어느 정도 백엔드 작업이 틀이 많이 갖춰지게 되었다. 그래서 DB에 잘 들어가는지, 입출력이 잘 되는지 합쳐서 확인해보았다. 우선 지금 상태로는 잘 들어가고, 이제 여기서 권한과 유저 아이디를 받아와서 확인하는 작업을 거칠 것 같다. MySQL도 Update로 바꿔서 확인해보았다. 아래의 코드처럼 application.yml 파일을 수정해주었다. (그 전에는 ddl-auto를 create로 해주었다.) MySQL 워크 벤처로 조금 쉽게 접근해서 확인하였다. spring: datasource: driver-class-name: c.. 2022. 11. 3.
[Pre-Project] Day 9 : Spring Security 프로젝트를 하는 과정에 있어서 기록하는 것이다. 잘못된 부분이나 수정이 필요한 부분은 꾸준히 수정할 예정이다. ✅ 주말 동안 구현한 것 JWT를 이용한 로그인 구현 현재 JWT를 이용하여 Access Token을 받아오고 그것을 헤더로 요청하면 권한을 가질 수 있다. ✅ 시도한 것 OAuth2와 자체 로그인을 동시에 사용 Security FilterChain에 그냥 등록하면 작동 안됨 공통 클래스를 빼고 설계를 바꿔야 함. 로그인 실패시 에러 메세지 변환 시킴. 😵‍💫 과정에서 발생했던 문제 우선 Config에서 필터를 수정하고, oauth2와 로그인을 동시에 해봤는데 순환 참조가 됨...! 🔥 해야할 것 : 끝나면 취소선으로 표시 1️⃣ OAuth2 로그인 구현 자체 로그인이랑 같이 사용이 가능한지 공.. 2022. 11. 2.