⚠️ 경고 ⚠️ 본 카테고리, Dev Memo는 필자가 깊게 다루기는 귀찮지만 궁금한 것들을 체험해보고 간단하게 기록을 남기는 공간입니다. 디버깅 노트, 써드파티 라이브러리 사용기, 버전 업데이트, 어이없는 실수, 오탈자 발견 등. 각종 시덥지 않은 내용이 들어 갈 수 있다는 점 참고바랍니다. (우헤헿) 일단 다음과 같은 환경을 갖춘 상태이다. 스프링부트 + JPA + Kotlin User와 Club 테이블은 양방향 조인 ID는 Auto Increment 다음은 요구사항이다. 클럽에 가입 신청 혹은 신청 승인된 User를 찾는다 특정 기간 내 가입 신청한 User들을 찾는다 해당 유저들은 클럽별로 묶는다 클럽별 가장 최근에 가입 신청한 User를 모아서 Return해준다 고민해보았다. 과연 Spring..
쿠키? 먹는거 그거? 크롬 브라우저를 열고 네이버에 접속해서 로그인을 한다. 그리고 새로운 탭을 열어서 네이버에 접속하면 로그인된 화면을 볼 수 있다. 이 상태에서 엣지나 웨일같이 다른 브라우저를 통해 네이버에 접속하면 해당 화면에서는 로그인이 되어 있지 않은 모습을 볼 수 있다. 당연하다고 생각했던 모습. 그런데 생각해보면 신기하다. 새로운 탭 화면과 새로운 브라우저 화면, 이 두가지 경우에 어떤 차이가 있길리 다르게 나타나는 것일까? 답은 쿠키(Cookie)에 있다. 쿠키는 일종의 파일이다. 유저가 통신 중에 본인을 인증하기 위해 클라이언트에 보관하는 파일이다. 저장된 쿠키를 서버에 전달해서 이 사용자임을 확인한다. 앞 예시를 떠올려보자. 크롬 브라우저에 쿠키가 저장을 할 수 있어서 새 탭으로 네이버..
스프링에서 test 패키지 내부에 data.sql을 넣은 것만으로도 data.sql 내부의 쿼리를 실행시킬 수 있다. 이런 방법으로 테스트용 더미 데이터를 생성하고 테스트를 동작시킬 수 있다. 비슷한 방법으로 DDL 동작이 필요한 경우에는 schema.sql을 만들어 내부에 create 등을 넣어두기만 하면 된다. 그런데 만약 schema.sql은 잘 동작하는데, data.sql이 제대로 동작하지 않는다면? 테스트에서 테이블이 생성되었지만 원하는 데이터가 나오지 않아 에러를 출력하는 경우가 있다. data.sql은 파일을 추가만 하면 되는 것이어서 별도의 세팅이 없기에 더욱 원인을 찾기 힘들다. 스프링 버전 및 sql.init.mode 이슈 내 경우에는 크게 두가지 원인이 있었다. 하나는 스프링 버전. ..
Rapid API라는 것을 들어봤을지 모르겠다. 여러 종류의 API를 제공해주는 플랫폼으로 사이드 프로젝트에 사용하기 좋은 것들이 참 많다. 유무료의 API를 사용할 수 있는데 이 중 무료 API를 하나 선택해서 어떻게 사용할 수 있는지 간략하게 설명해 보겠다.
참고사항 : 본 실습환경은 스프링(Spring boot) + 코틀린(Kotlin) + MySQL + JPA이다. "배달의 만족"이라는 회사가 있다고 가정해보자. (만족이다. 민족아니다.) 이 회사는 음식 배달을 서비스하는 회사이기에 여러 식당과 계약을 맺은 상태이다. 그래서 식당 DB가 있을 것이고 배달하는 분들의 데이터가 들어간 라이더 DB가 있을 것이다. 서로 다른 2개의 스키마를 하나의 서비스에서 사용하는 일이 생길 수 밖에 없다. 그럴 때 어떻게 해야할까? 먼저 모델과 환경변수를 세팅하자 당연히 모델은 2개로 분리가 될 것이다. 아래 2개의 Entity 모델이 바라볼 DB를 앞으로 세팅하게 될 것이다. Restaurant.kt Rider.kt 그리고 환경변수(yml 파일)는 아래와 같다. 이때 각..
시작하기 앞서 난 코틀린도 RestTemplate도 제대로 이해하지 못한다. 물론 사용은 하고 있었으나 제대로 알고 사용하는 것과는 거리가 있었다. 그래서 기본적인 내용부터 포스팅에 담을 것이다. 누군가에게는 매우 기본적인 내용이 될 수 있으니 필요에 따라 내용을 필터링하여 읽으시길 권한다. ✅ 필요한 사전 지식 - 코틀린 기초 지식 - Spring framework 다음의 3단계로 개발을 진행한다. 1. RestTemplateClient : RestTemplate을 가지고 있는 추상 클래스 2. RestTemplateConfig : RestTemplate을 주입하는 설정파일 3. 실제 API를 호출하는 Service 혹은 Client 개발 RestTemplateClient API를 호출하는 곳에서 쉽게..
서두 본 글은 코틀린 + 스프링부트 환경에서 @Valid가 동작하지 않는 케이스를 다루었고 해당 이슈를 완전히 해결하지 못했음. 해결을 하기는 했는데 해결이 된 이유를 알 수 없음. 완벽한 해결책을 찾고자 했다면 "뒤로가기" 버튼을 누르기 바람 설명에 앞서 개발환경을 간단히 소개하고자 한다. 혹시나 나와 비슷한 상황을 겪고 이를 해결한 분이 계시다면 댓글로 안내를 부탁드...립니다. (제발) 아래는 gradle 스크립트 중 일부이다. plugins { id("org.springframework.boot") version "2.5.0" id("io.spring.dependency-management") version "1.0.11.RELEASE" kotlin("jvm") version "1.5.10" ko..
⚠️ 경고 ⚠️ 본 카테고리, Dev Memo는 필자가 깊게 다루기는 귀찮지만 궁금한 것들을 체험해보고 간단하게 기록을 남기는 공간입니다. 디버깅 노트, 써드파티 라이브러리 사용기, 버전 업데이트, 어이없는 실수, 오탈자 발견 등. 각종 시덥지 않은 내용이 들어 갈 수 있다는 점 참고바랍니다. (우헤헿) 스프링에서 여러 개발환경을 세팅하고 있을 수 있다. 예를 들면 아래처럼 기본 yml 파일이 있고 여건에 따라 다른 환경으로 테스트를 할 수 있도록. resources ㄴ application.yml ㄴ application-dev.yml ㄴ application-local.yml 기본적으로는 application.yml 상 환경으로 진행될텐데, dev나 local은 어떻게 하면 바라볼 수 있을까? 간단하..
많은 곳에서 API 게이트웨이를 사용하고 있다. 그런데 이 용어의 뜻을 찾아보면 난해한 설명만 나와 있다. 그래서 나름대로 설명을 좀 쉽게 풀어보았다. 게이트웨이는 무엇인가. 위키피디아에서는 다른 네트워크로 들어가는 입구 역할을 하는 네트워크 포인트라고 나와 있다. 매우 적절한 설명이 아닐 수 없다. 그렇다면 이걸 바탕으로 API 게이트웨이를 설명할 수 있지 않을까. 이를 NHN 토스트 블로그에서 설명을 잘 하고 있다. 해당 설명을 좀 더 쉽게 풀어보면... 사용자(백엔드 개발자 혹은 인프라 담당자)가 설정한 라우팅 설정에 따르며, 여러개의 서비스에 향하는 클라이언트로부터의 요청을 받아서 각 엔드포인트(실제 API)로 (클라이언트를 대리하여) 요청하고 응답을 받으면 다시 클라이언트에게 전달하는 프록시 역..
요즘 Oauth를 활용한 회원가입 및 로그인 개발을 하는 중이다. 쉽게 얘기하면 우리가 쉽게 접하는 구글, 페이스북 등의 서비스를 통해 다른 플랫폼에서 회원가입 및 로그인을 하는 기능이다. 요즘 흔히 보이는 SNS 로그인이 바로 이것이다. 그런데 이 부분을 학습하면서 헷갈리는 부분이 매우 많다. 토큰 개념부터 리다이렉트 이슈까지. 나를 헷갈리게 한 것 중 하나를 여기서 다뤄보겠다. 바로 Provider이다. 혹시 Oauth에 대해 개념 정리가 잘 안되는 분들에게는 위 링크와 별도로 아래 링크도 참고하길 바란다. OAuth2 서비스 인증 | Android 개발자 | Android Developers 온라인 서비스에 안전하게 액세스하려면 사용자는 신원을 증명하여 서비스에 인증해야 합니다. 타사 서비스에 액세..
Comment