728x90 반응형 Spring10 [Spring] 서블릿 매핑(*.do)과 @RequestMapping 경로 불일치, 왜 작동할까? web.xml에서 DispatcherServlet이 *.do로 매핑되어 있다고 가정해 보자. Controller엔 /apple 이라는 GET API만 존재한다고 가정한다.예를 들어, 클라이언트가 /apple.do로 요청을 보내면, 이 요청은 DispatcherServlet으로 전달된다. DispatcherServlet은 내부적으로 어떤 Controller가 이 요청을 처리할지 결정한다. /apple.do로 정확히 매핑된 @RequestMapping이 존재하지 않기 때문에, 당연히 매핑 오류가 발생할 줄 알았다.그런데 예상과 달리, /apple로 선언된 메서드가 이 요청을 정상 처리한다.왜 그럴까? 이유는 RequestMappingHandlerMapping 클래스의 useSuffixPatternMatc.. 2025. 7. 6. [Spring] OutOfMemoryError - GC overhead limit exceeded 원인 분석 및 해결 OOM 이 발생하면 일반적으로 두 가지를 경험한다. 1. java heap space 2. GC overhead limit exceeded ❓ 원인 분석- java heap space heap 영역의 공간이 부족해서 발생하는 오류(주로 코드 내 메모리 누수) - GC overhead limit exceeded 1. GC가 자주 발생하여 오버헤드 발생 2. GC를 수행하는 시간의 98%를 소비했지만, Heap 메모리의 2% 미만으로 복구 3. 응용 프로그램이 모든 메모리를 소진했고, GC 소요 시간이 너무 길고, 반복적인 실패를 할 때 같은 OOM 이지만 살짝 다른 의미를 지닌 에러이다. 일반적으로 코드 단에서 메모리 누수를 개선하거나, JVM Heap 사이즈를 증가시켜 해결하는 방법이 많이 보였다. [.. 2024. 11. 20. [Spring/Mybatis] 마이바티스 조회 시 NULL 반환 이슈(returnInstanceForEmptyRow) 버전 업그레이드 프로젝트 중 발견한 사항을 기록합니다.기존 버전에는 오류가 나지 않았으나, 버전 업그레이드가 된 버전에서는 오류가 발생하여 해당 원인을 파악하고 해결방법을 찾아 기록합니다. Mybatis에서 조회 시 Null이 반환되어 NullPointerExeception(NEP)가 발생 비즈니스 로직 내 코드나 쿼리가 변경된 것은 없었습니다.기존 프로젝트에선 Null을 반환하지 않았는데, 신규 프로젝트(버전업)에서는 Null이 반환되었습니다. 테스트 케이스는 아래와 같습니다. SELECT PHONE_NUMBER FROM USER WHERE USER_ID = 'TESTID' 위와 같이 한 컬럼만을 조회하는 쿼리를 실행하는데, 조회되는 ROW(데이터)는 있지만 null이 허용된 컬럼으로 컬럼 내 데이.. 2024. 6. 24. [Test] ConnectionTimeout / ReadTimeout 테스트 하기 Connection Timout, Read Timeout 테스트하기 타 시스템과 연동 시 타임아웃 설정은 필수적이다. 그 이유는 설정을 해주지 않으면, 무한으로 대기하는 현상이 발생할 수 있다. 테스트하는 방법에 앞서, Connection Timeout과 Read Timeout에 대해 간단하게 이해하고 넘어가자 급한 사람들을 위해 Connection Timeout 테스트 시 사용할 URL > http://example.com:81 Read Timeout 테스트시 사용할 URL > http://httpbin.org/delay/10 Read Timeout은 마지막 URL 숫자가 처리 시간을 의미한다. http://httpbin.org/delay/10 > 10초 http://httpbin.org/delay/3.. 2024. 4. 9. 이전 1 2 3 다음 728x90 반응형