반응형 spring5 Postman에서는 되는데 브라우저에서는 CORS 오류? Spring Boot 확인 순서 Postman에서는 JSON이 잘 오는데 프런트엔드에서 호출하면 CORS 오류가 납니다. 서버가 죽은 것도 아닌데 브라우저만 실패하니, 일단 모든 요청을 허용하고 싶어집니다. 이때는 설정부터 넓히기보다 브라우저가 보낸 출처, OPTIONS 사전 요청, 실제 API 응답을 차례로 확인하는 편이 빠릅니다.CORS는 브라우저가 다른 출처의 응답을 자바스크립트에 공개할지 판단하는 규칙입니다. API 도구나 curl의 성공만으로 브라우저에서도 읽을 수 있다고 결론 내릴 수 없습니다. 아래에서는 허용한 프런트엔드와 포트 하나가 다른 프런트엔드를 비교합니다.주소창의 출처와 허용 목록이 같은지 봅니다출처는 스킴·호스트·포트의 조합입니다. http://localhost:5173과 http://localhost:5174는.. Spring Security 2026. 10. 9. @Transactional을 붙였는데 왜 롤백이 안 될까? 같은 클래스 호출·예외 처리로 재현하기 @Transactional이 붙어 있는데 실패한 데이터가 DB에 남았다면, 트랜잭션이 실제로 시작됐는지와 발생한 예외가 롤백 조건에 해당하는지부터 나눠 보세요. 같은 클래스 안에서 부른 메서드, checked exception, 메서드 안에서 잡아 버린 예외는 겉으로 비슷해도 확인할 지점이 다릅니다.여기서는 메모 한 행을 저장한 뒤 일부러 실패시키고, 호출이 끝난 다음 DB에 남은 행을 셌습니다. Java 25.0.3, Spring Framework 7.0.9, H2 2.4.240에서 여섯 경우를 확인했습니다. Spring Boot 4.1.1의 의존성 관리를 사용했으며, 별도의 Boot 서버 없이 Spring 컨텍스트와 JDBC 트랜잭션 매니저로 실행했습니다.같은 저장 코드도 호출 방식과 예외에 따라 결.. Spring Framework 2026. 10. 8. HikariCP 연결 시간 초과: 느린 쿼리·커넥션 누수·풀 부족 구분하기 Connection is not available, request timed out가 보이면 풀 크기부터 늘리고 싶어집니다. 하지만 이 메시지가 직접 말해 주는 것은 정해진 시간 안에 풀에서 연결을 얻지 못했다는 사실입니다. 연결을 오래 쓰는 쿼리, 반환되지 않는 연결, 한꺼번에 몰린 요청은 모두 같은 대기를 만들 수 있습니다.작은 H2 데이터베이스와 연결 하나짜리 풀로 현상을 재현해 보겠습니다. HikariCP 7.0.2, H2 2.4.240, JDK 25.0.3에서 세 테스트를 실행했습니다. 로컬 실험에서 원인의 차이를 보는 글이며, 특정 풀 크기를 운영 환경의 정답으로 제시하지는 않습니다.connectionTimeout은 연결을 빌리는 대기 시간입니다connectionTimeout은 클라이언트가 풀.. Spring Data/DataSource와 Connection Pool 2026. 10. 8. Spring Boot REST API에서 검증 오류를 JSON으로 응답하는 방법 회원가입 API에 엉뚱한 이메일을 보내면 400이 돌아옵니다. 그런데 화면에서는 어느 칸을 고쳐야 하는지 알 수 없습니다. 검증 실패를 필드 이름과 안내 문구가 있는 JSON으로 바꾸면 클라이언트가 오류를 입력 칸에 붙일 수 있습니다.이 글에서는 @Valid @RequestBody 검증 실패를 ProblemDetail로 응답합니다. 잘못된 JSON과 쿼리 매개변수 오류도 분리합니다. 예제는 Spring Boot 4.1.1, Spring Framework 7.0.9, Java 17 문법으로 작성했고 JDK 25.0.3에서 실제 HTTP 요청으로 확인했습니다.먼저, 클라이언트가 받을 응답을 정합니다HTTP 상태는 400으로, 프로그램이 판단할 값은 code로, 사람이 읽을 내용은 message로 나눕니다. .. Spring MVC/Validation 2026. 10. 8. @EventListener는 비동기일까? 실행 순서와 트랜잭션으로 확인하기 @EventListener를 붙였으니 주문 저장과 알림 발송이 따로 돌아갈 것 같지만, 기본 설정에서는 발행한 쪽이 리스너 실행을 기다립니다. 이벤트를 썼다는 사실만으로 비동기가 되지는 않습니다. 실행 스레드와 트랜잭션 시점을 나눠 보면 동작이 명확해집니다.이 글의 Kotlin 예제는 Spring Framework 7.0.9와 H2에서 확인했습니다. 기본 이벤트 멀티캐스터를 사용하며 별도의 비동기 멀티캐스터나 오류 처리기를 설정하지 않았습니다. 다섯 테스트로 발행 전후 순서, 비동기 작업, 커밋, 롤백, 리스너 예외를 재현했습니다.기본 리스너는 publishEvent 호출 안에서 실행됩니다Kotlin · 이벤트와 리스너data class OrderCreated(val fail: Boolean = fals.. Kotlin 2023. 2. 14. 이전 1 다음 반응형