이슈가 생겼을 때, 보통은 잘못된 분석이 원인인 경우가 많다. 그렇다면 이 잘못된 분석은 어떤 원인으로 발생할까? 이 의문을 조금이나마 풀어준 경험을 공유해볼까 한다. 최초 발견 내가 겪은 이슈는 아래와 같다. 로컬 환경에서 테스트 중 특정 화면의 조회 기능 문제를 발견 승인여부에 Y를 입력하여 조회시 결과가 조회되지 않음 (아래 이미지 참고) 전체 혹은 N을 입력했을 때에는 정상 조회가 됨 개발서버에서 테스트 시 문제가 없음 // 에러 메세지 Caused by: java.lang.IllegalArgumentException: org.hibernate.query.SemanticException: Could not interpret path expression 'user.businessVerifiedAt'..
매일 특정 시간마다 알림톡을 발신하는 기능을 만들려고 한다. 스케줄러 역할에는 AWS의 EventBridge를 사용했고 이벤트 메세지 발신용도로 SQS를 사용했다. 개발 환경은 아래와 같다. Kotlin 플러그인 버전 1.7.22 스프링부트 3.0.5 id("org.springframework.boot") version 3.0.5 JDK 17 java.sourceCompatibility = JavaVersion.VERSION_17 MySQL, JPA, QueryDSL 기타 id("io.spring.dependency-management") version 1.1.0 지금부터 소개할 내용들은 아래 자료를 참고하였다. 소개할 내용들이 이해가 가지 않는다면 아래 자료를 읽어볼 것을 권장한다. AWS SQS + ..
. 2022.10.12, 13:56 잘못 작성된 내용이 있어서 수정했습니다. 개발환경과 요구사항 본 내용은 스프링부트 + 카프카 환경에서 아래의 의존성과 카프카 세팅을 참고하여 읽기를 권한다. 개발 도구는 맥북 + 인텔리제이이다. // build.gradle plugins { id 'org.springframework.boot' version '2.7.2' id 'io.spring.dependency-management' version '1.0.12.RELEASE' id 'java' } dependencies { // 일부 생략 implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.springfr..
. 시작하기 앞서 여기에서 진행되는 환경은 스프링부트 + 코틀린이며 아래와 같은 의존성이 추가가 되어 있다. kotlinVersion=1.7.10 springBootVersion=2.5.13 // build.gradle testImplementation("org.mockito.kotlin:mockito-kotlin:4.0.0") testImplementation("org.springframework.boot:spring-boot-starter-test") testImplementation("org.springframework.kafka:spring-kafka-test") testImplementation("io.mockk:mockk:1.13.1") 테스트를 만들었는데 when-then 형태로 아래와 같은..
⚠️ 경고 ⚠️ 본 카테고리, 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 이슈 내 경우에는 크게 두가지 원인이 있었다. 하나는 스프링 버전. ..
⚠️ 경고 ⚠️ 본 카테고리, Dev Memo는 필자가 깊게 다루기는 귀찮지만 궁금한 것들을 체험해보고 간단하게 기록을 남기는 공간입니다. 디버깅 노트, 써드파티 라이브러리 사용기, 버전 업데이트, 어이없는 실수, 오탈자 발견 등. 각종 시덥지 않은 내용이 들어 갈 수 있다는 점 참고바랍니다. (우헤헿) API를 개발하는 업무였고 Local에서는 문제없이 잘 동작했다. 그러고는 개발 서버에 배포하면서 CI/CD에도 이슈없어서 "아~ 다했다."하고 안심했는데 프론트엔드 개발자가 "개발서버 동작안하는데요?"라고 하셨다. 엄훠나. 지금 진행하는 프로젝트는 스프링부트 Application을 Docker로 빌드를 한다. Docker로 빌드하기위해 스프링 내부에 Dockerfile 파일을 가진다. 이 Dockerf..
서두 본 글은 코틀린 + 스프링부트 환경에서 @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..
Comment