목록Tech/Spring (39)
우당탕탕
JPA로 개발하면서 가장 골치 아팠던 게 바로 N+1 문제이번 글에서는 제가 직접 겪은 JPA N+1 문제의 발생 상황부터, 문제 진단 방법, 그리고 단계별 해결 절차를 아주 상세하게 풀어봤어요. 코드를 중심으로 꼭 따라 할 수 있게 안내할게요.개발 환경 / 버전 정보저는 Java 17 기반으로 개발했고, Spring Boot 3.1 버전을 사용했습니다. JPA는 기본적으로 hibernate-core 6.x 버전을 이용했고요. 데이터베이스는 MySQL 8입니다.N+1 문제 실제 발생 상황과 처음 진단한 방법사실 이 부분이 가장 골치 아팠어요. 간단한 게시판 프로젝트를 만들었는데, 게시글 목록을 띄우는 화면에서 유독 페이지 로딩이 느린 거예요. 원인을 찾아보니 쿼리 로그가 정말 많더라고요.우선 applic..
Spring Boot에서 Validation 커스텀 어노테이션을 직접 만들어야 하는 상황이었는데요. 특히 가격이나 비용, 요금 같은 숫자 데이터를 비교해서 유효성을 검사하는 부분에서 꽤 삽질을 많이 했어요. 처음에는 단순히 @Min, @Max 같은 기본 어노테이션을 쓰려고 했는데 조건이 복잡해지면서 커스텀이 필요하더라고요.이 글에서는 제가 직접 구현한 커스텀 Validation 어노테이션과 그 과정에서 겪은 문제, 그리고 숫자 비교를 위한 전략과 비용 차이를 표로 비교한 내용을 담았어요. 같이 보면서 어떻게 하면 숫자 데이터 검증을 효과적으로 할 수 있을지 감 잡으실 수 있을 거예요.개발 환경 / 버전 정보이번 프로젝트는 Java 17과 Spring Boot 3.2를 사용했어요. Validation 라이..
직장 동료가 Spring Batch를 써서 대용량 데이터를 처리하는 걸 보고 저도 도전해봤는데요. 생각보다 간단할 줄 알았는데 비용 비교 같은 숫자 처리에서 여러 시행착오가 있었어요. 특히 가격이나 요금, 한도 같은 숫자 값을 다룰 때 미묘한 오차나 비교 문제 때문에 코드가 꼬이는 경우가 많더라고요.이 글에서는 제가 직접 Spring Batch를 세팅하고, 숫자 비교에서 발생한 문제와 그 해결법을 상세하게 정리했어요. 덕분에 여러분도 저처럼 헤매지 않고 비용/가격 관련 배치 작업을 빠르게 완성할 수 있을 거예요.개발 환경 / 버전 정보제가 사용한 환경은 다음과 같아요. Spring Batch 5.0.0 버전부터 바뀐 부분도 있었고, Java 17 기반이라 최신 기능도 써봤습니다.Java 17Spring ..
Spring Security 6으로 마이그레이션하면서 권한 설정 부분에서 생각보다 삽질을 많이 했어요. 기존 버전과 달라진 점이 꽤 많아서, 그냥 대충 넘어가면 인증은 통과하는데 권한 체크가 엉망인 상황이 벌어지더라고요.그래서 이번 글에서는 제가 직접 부딪히고 해결한 경험을 바탕으로, Spring Security 6에서 권한 설정할 때 꼭 확인해야 할 부분들을 ✅ 체크리스트로 정리해 드릴게요. 사실 이 글 하나만 잘 봐도 권한 관련 이슈는 거의 다 해결될 거예요.개발 환경 / 버전 정보이번 작업에 사용한 주요 버전은 Java 17, Spring Boot 3.1.2, 그리고 그에 맞춘 Spring Security 6.1.2입니다. 최신 릴리즈 정책에 맞춰서 보안 정책들도 강화된 상태라, 기존 방식으로 설정..
Spring Cloud Gateway를 도입하면서 라우팅 설정 때문에 한참 삽질했던 경험이 있어요. 단순히 라우팅만 잘 설정하면 되겠지 하고 시작했는데, 예상보다 훨씬 까다로운 부분들이 있더라고요.이 글에서는 제가 직접 겪었던 라우팅 문제와 그 해결 과정을 바탕으로, Spring Cloud Gateway를 쓸 때 반드시 확인해야 할 핵심 사항들을 ✅체크리스트 형태로 정리해봤어요. 특히 빠뜨리기 쉬운 부분에 더 신경 썼으니, 이 글만 끝까지 보면 라우팅 때문에 헤매는 일은 없을 거예요.개발 환경 / 버전 정보먼저 제가 사용한 환경부터 소개할게요. 개발하다가 버전 차이 때문에 헷갈릴 수도 있어서요.Java 17 - LTS 버전으로 안정적으로 개발 중입니다.Spring Boot 3.1.0 - Gateway 지..
저도 처음에 Spring Boot 프로젝트에 Querydsl을 도입할 때 생각보다 삽질이 많았거든요. 쿼리 작성이 훨씬 편해진다는 이야기에 도입을 결심했는데, 설정부터 코드 작성까지 한 번에 깔끔하게 정리된 자료가 별로 없더라고요.그래서 직접 제가 경험한 걸 바탕으로 Querydsl 도입 절차를 단계별로 정리해봤습니다. 설정부터 빌드, 코드 작성, 그리고 흔히 겪는 문제 해결까지 이 글만 보면 충분할 거예요.개발 환경 / 버전 정보제가 사용한 환경은 Java 17, Spring Boot 3.1.0, 그리고 Gradle 8.0였습니다. 이 조합에서 Querydsl 5.0.0 버전을 도입했어요.1단계: build.gradle에 Querydsl 의존성 추가사실 이 부분에서 많이들 헷갈려하시는데, 저는 이렇게 ..
