CS 스터디하면서 다시 Spring 의 기본 동작 원리를 살펴보고 있는데 정말 어렵다 🤧 SPRING 이랑 가까워지려다가도 더 알면 알 수록 멀어지는 느낌이랄까?! 처음에는 JAVA의 특징들을 그대로 물려받은 것 같다 생각해서 쉽게 느껴졌는데 깊이 알면 알 수록 어렵게 느껴진다 🟢 DI 종류는 어떤것이 있고, 이들의 차이는 무엇인가요? 의존성 주입 방법에는 생성자 주입 방법, 필드 주입 방법, setter 주입 방법 이 있습니다. # 생성자 주입 방법 ✅ 객체가 생성될 때 생성자를 통해 의존성 주입 ✅ 필수 의존성을 처리할 때 권장 ✅ 객체는 완전히 초기화된 상태로 사용되기 때문에 완전하지 않은 상태(의존성 없이)로 사용될 수 없도록 강제할 수 없어서 안전함 ✅ 단일 생성자에 한해 ‘@Autowired’..
전체 글
열심히 프로젝트 에러 수정을 하며 포스트맨으로 테스트를 하던 도중 문제가 발생하였다. 갑자기 로그인 후 마이페이지 조회가 안 되는 것이다 😱 (계속 테스트 하던 도중 안 됐다) 분명 방금 발급받은 토큰으로 동일한 memberId의 회원을 조회하고 있는데 401 에러( Unauthorized User )가 계속 떴다. 🫠 🚨 에러 발생 / ⚠️ Unauthorized error happened: JWT expired at 2023-10-12T11:35:37Z. Current time: 2023-10-12T11:35:44Z, a difference of 7897 milliseconds. Allowed clock skew: 0 milliseconds. 계속해서 이런 메세지가 떴는데 이 때 나는 회원 마이페이지..
#가비지 컬렉터가 나온 이유? C, C++언어는 할당한 메모리를 직접 해제 해줘야 한다. 따라서, 메모리 누수와 같은 문제가 발생하기 쉽다. Java에서는 가비지 컬렉터를 도입하여 자동으로 사용하지 않는 메모리를 회수해, 메모리 관리를 보다 효율적으로 할 수 있다. #가비지 컬렉터 Stop the world GC를 위해 JVM이 실행을 멈추는 현상 GC를 실행중인 스레드를 제어하고 모든 스레드의 작업을 중단, GC 작업이 끝나면 다시 실행 튜닝하면 좋다 라고 했을 때 꼬리질문 나올 수 있음 , 그럴 때는 article 정도는 찾아봤다. 라고 했다. GC의 대상 JVM메모리 영역에서 객체들은 heap영역에서 생성되고 stack 영역이나 method 영역에서는 객체의 주소값만 저장 → 참조하는 객체 heap..
📌 pre-project D+6.5 (주말) #me -주말동안 tag 기능 추가 ☑️ Entity, TagController , TagMapper, TagService, Dto... - 내가 작성한 코드 팀장님 코드와 작성법 맞추기 * 우리 조는 프론트의 요청으로 OAuth2는 빼고 JWT만 하기로 했다. 🗝️ # team - BE 주말동안 우선 Answer와 Question 부분도 대략적인 CRUD가 완성이 되었다. 그리고 나는 팀장님과 많은 이야기를 나누었다. 😶🌫️ Answer 부분이 PR올라왔는데 문제가 많았기 때문이었다. Answer 부분에서 많은 오류가 발생하다보니 test를 진행하기 어려워 나와 팀장님은 모두 주석 처리하여 작업을 진행하였다. 문제 부분들은 코드 리뷰 시 하나하나 작성해 놓..
프로젝트 기간이 끝난지도 벌써 2주가 다 되어간다 ~ 시간이 정말 빠르다... 하지만 아직 완성되지 않은 우리의 프로젝트 (🔒조금 답답하다) 해결해야 할 부분이 정말 많아 보이는데 보완해야 할 부분이 아니라 완성해야 할 부분이기에 팀원들 모두 힘을 모아 해야 한다.🥲 다들 두 달 내내 잠도 제대로 못 자고 달렸으니 힘든 것은 이해한다.. 조금만 더 힘내자구우! 노션에 정리해 둔 우리가 아직 구현하지 못한 기능 구현 리스트 ! 구현하고 내가 구현한 부분들은 다 수정을 했기에 지웠다. 그리고 제발 보안 쪽을 빨리 수정하고싶다. 오늘은 User 탈퇴 시 게시글, 댓글, 대댓글까지 삭제하는 기능을 추가하고 게시글 삭제 시 댓글, 대댓글 삭제하는 기능까지도 추가했다.
프로젝트를 진행하며 새롭게 맡아서 해본 부분을 취업준비하며 하나씩 기록해볼까 한다. CRUD 이외에 로그인(JWT + OAuth2), 이미지 파일 업로드, 이메일 보내기 와 같은 서비스를 도맡아 구현했는데 하나씩 정리해볼까 한다. 프리 프로젝트 보다 이번 프로젝트에서 확실히 많은 성장이 있었던 것 만은 분명한 것 같다. 많은 우여곡절이 있었고 팀원들과도 많은 이야기들을 나누며 더욱 소통의 중요성을 깨닫고 성장하는 시간이 될 수 있었다. 그리고 아쉬운 것은 프로젝트 기간동안 중간 중간 블로그에 기록을 하고싶었으나 쉽지 않았고 에러가 발생하면 그때 그 때 캡쳐해서 사진을 올려놓거나 녹화해서 남겨놓는 형태로 하였다. 💭 목표 상기하기현재 ‘내'가 학습을 통해 이루고자 하는 것은 무엇인가요?여러분이 현재 바라는..
git을 사용하다보면 자주 나오는 에러가 있다. 그래서 찾아보기 쉽게 블로그에 작성하고자 하여 이렇게 작성한다. 🚨 에러 발생 : fatal: refusing to merge unrelated histories 이 에러는 로컬 저장소와 원격 저장소의 이력이 관련 없을 때 발생하게 된다. 나는 주로 새로운 레포지토리를 clone 해오며 다음과 같은 에러를 자주 마주했다. ✅ 에러 발생 이유 그 이유는 Git 레포를 만들고 커밋한 후 저장소에 새로운 commit을 추가하게 되면 로컬 저장소와 원격 저장소의 이력이 서로 관련 없어지게 되기 때문이다. 쉽게 말하면 원격 저장소에서 commit을 추가하게 되면 로컬에서는 이 commit 에 대한 사실을 모르는 상태가 된다. 따라서 로컬에서 원격으로 다시 push ..
오늘 오랜만에(? git 과 관련된 에러가 발생했다. 😮 git 관련 에러는 아래에 hint가 나와서 다행이다. 그리고 사실 서치해보면 많은 결과가 나온다. 🚨 에러 발생 / failed to push some refs to 'github.com:luminousol/seb45_main_016.git' 아래 노란 hint 도 주루룩 뜨고 있었다. 서치해보았을 때 상단에 뜨는 대부분의 블로그들이 강제로 push 해버리는 방법이 많았다. 하지만 팀 프로젝트에서 강제로 push하는 것은 위험하기 때문에 난 겁쟁이라 다른 해결 방법을 찾아 해결하고자 하였다. 우선 에러 메세지를 읽고 git pull을 하였다. (나만 푸쉬해서 문제가 없을텐데 왜지..? 라는 생각을 했다...왜냐면 동기화 된 파일 또한 내 꺼이기 ..
이번 프로젝트에는 OAuth 2도 적용을 해보기로 하였다. 너무 설렌다. Google과 Naver도 해볼까 했지만 나중에 메시지도 보내야 하고 OAuth2로만 로그인 시키는 것이 편할 것 같다는 생각에 우선적으로 카카오만 하기로 했다. Google OAuth 2는 두 번 정도 사용해 본적이 있지만 카카오는 처음이라 기록을 남기고자 한다. 다음에 또 할 수도 있으니까..?ㅎㅎ 내가 보기 위해 기록하는 카카오톡 OAuth 2 구현하기~!! 👩💻 Kakao developers Kakao Developers 카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다. developers.kakao.com 카카오 개발자 페이지에 들..
yml 파일을 작성하고 security 의존성을 추가하였다. 그리고 에러가 발생..하였다.... 🚨 에러 발생invocation of init method failed ; nested exception is org.hibernate.service.spi.serviceexception다음과 같은 오류가 발생했을 때는- H2 데이터베이스가 켜져 있는지 확인하고 안 켜져 있다면 H2 데이터 베이스를 켜준다.- application.yml 파일 확인 yml 파일 확인을 해 보았다.spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver위의 형태와 같이 작성이 되어 있었고 h2 속성은 작성되지 않았다. 문제의 이유는 아래와 같았다.Driver 클래..