Spring Boot에서 카카오 소셜 로그인 적용
Spring Boot 환경에서 OAuth2.0을 도입해보려고 한다. 기존 회원가입이 된 사용자에 대해서만 OAuth 연동을 하도록 할 것이며, 이에 따라 OAuth로만 회원가입은 불가하다. JWT를 사용중인 환경으로 OAuth2.0을 어떻게 적용할 것인 지에 대해 알아보자. 동작 흐름 카카오에서 제공하는 공식 과정은 아래 사진과 같다. S...
Spring Boot 환경에서 OAuth2.0을 도입해보려고 한다. 기존 회원가입이 된 사용자에 대해서만 OAuth 연동을 하도록 할 것이며, 이에 따라 OAuth로만 회원가입은 불가하다. JWT를 사용중인 환경으로 OAuth2.0을 어떻게 적용할 것인 지에 대해 알아보자. 동작 흐름 카카오에서 제공하는 공식 과정은 아래 사진과 같다. S...
최근 QueryDSL을 사용해서 쿼리를 작성하다가, “ON 절에 조인 목적이 아닌 조건을 넣어도 되는 건가?” 라는 생각이 들었다. 겉보기에는 잘 동작하지만, LEFT JOIN을 사용하는 순간 결과가 예상과 달라지는 경우가 있었다. 이 글에서는 ON 절과 WHERE 절의 차이가 실제로 어떤 동작 차이를 만드는지 정리해본다. 일반적인 조인 일반적으로...
문제 상황 두 명 이상이 동시에 입장할 때, 세션 정원을 충족해도 입장이 가능하다고 판단하여 정원보다 많은 사용자가 한 세션에 매칭되는 문제 두 명 이상이 동시에 입장할 때, 새로운 세션을 생성하는 과정이 중복으로 실행되며 세션이 두 개 만들어지고, 먼저 생성된 세션에는 사용자가 정상적으로 매칭되지 않는 문제 낙관적 락 처음에는 Red...
회원 가입 과정에서 이메일 인증이 필요하며 이를 백엔드 서버에서 요청을 받아 인증 메일을 보내도록 할 것이다. 인증 메일은 서비스 운영 중 실제 사용자에게 보내질 메일이기 때문에 개인 메일로 보내지 않고, 사용중인 도메인으로 메일을 보낼 계획이다. 본 글은 도메인의 네임서버가 Cloudflare인 환경에서의 과정이다. 무료로 도메인으로 이메일을 보...
참고 사이트 https://castle-of-gyu.tistory.com/87 https://github.com/querydsl/querydsl/issues/3428 문제 정의 QueryDSL을 사용해서 각 행으로 분리된 권한 데이터를 List로 합치는 과정에서 아래와 같은 문제에 직면했다. 예를 들어, 아래와 같이 테이블이 있을 경...
밖에서는 맥북을 사용하고, 집에서는 데스크탑을 사용한다. 이렇게 개발 환경을 옮기면서 작업을 하면 커밋되지 않은 수정사항을 공유해야 한다. 어떻게 수정사항을 공유할 수 있을지 알아보자. 🚀 방법 찾아본 적절한 방법은 아래와 같이 두 가지가 있다. 1️⃣ 임시 커밋 방식 2️⃣ Patch 파일 공유 방식 📝 임시 커밋 임시로 커밋을 하고, 새로...
erDiagram NoticeDetail ||--|{ Notice : "1:N" NoticeDetail { long id PK string title string author datetime created_at } Notice { string id PK...
Java와 Spring Boot 프로젝트 개발 시 싱글톤은 자주 사용되는 패턴 중 하나이다. 인스턴스를 하나만 생성하여 메모리 효율성을 높이고 전역적으로 동일한 객체를 사용하기 위해 사용된다. 특히 데이터를 저장하기보다 로직을 처리하는 클래스에서 주로 사용된다. 이 싱글톤 클래스를 관리하는 방법은 여러가지이고, 이 글에서는 Bean 등록 방식과 ...
백준에서 단계별 문제 풀기를 통해 Deque를 써보다가 이상한 점을 감지했다. Deque가 원하는 대로 요소를 꺼내지 않았는 문제였다. private static void rotate(int count, Deque<Integer> deque) { for (int i = 0; i < count; i++) { deq...
개발하다가 간혹 비동기 함수를 직접 return할 때가 있다. 처음에는 await을 꼭 붙여줬는데 지금은 await을 붙이지 않아도 된다는 사실을 알게되었다. 왜 await을 붙이지 않아도 되는 걸까? Promise 중첩 아래 코드의 asyncFunction() 함수는 비동기 로직을 수행하고, 가져온 결과 값에 추가 로직(+ 1)을 수행하여 r...