분류 전체보기
-
Spring 대용량 파일 업로드Back-end/Spring 2025. 10. 30. 10:58
요구사항1GB 이상의 파일 업로드테스트 결과 문제사항 1OOM: Java Heap Space상세설명Request 데이터를 재사용 가능하게 하기위해 HttpServletRequest 를 HttpServletRequestWrapper 로 변환 하는 filter 가 있는데, 해당 필터에서 Request Data 를 InputStream 으로 읽어 들여 ByteArrayOutputStream 으로 캐싱 하는 과정에서 OOM ( OutOfMemory ) 발생.HTTP Request Message 내용의 본문을 Inputstream 을 사용해서 한번이라도 읽어 들인다면 본문의 내용은 비워진다예제 소스) public class ReadableServletRequestWrapper extends HttpServletR..
-
-
[Programmers] 서울에서 김서방 찾기Algorithm 2022. 5. 2. 15:01
서울에서 김서방 찾기 문제 설명 String형 배열 seoul의 element중 "Kim"의 위치 x를 찾아, "김서방은 x에 있다"는 String을 반환하는 함수, solution을 완성하세요. seoul에 "Kim"은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니다. 제한 사항 seoul은 길이 1 이상, 1000 이하인 배열입니다. seoul의 원소는 길이 1 이상, 20 이하인 문자열입니다. "Kim"은 반드시 seoul 안에 포함되어 있습니다. 입출력 예seoulreturn ["Jane", "Kim"] "김서방은 1에 있다" import java.util.Arrays; public class 서울에서김서방찾기 { public static void main(String[] args) ..
-
[Programmers] 수박수박수박수박수?Algorithm 2022. 5. 2. 14:51
수박수박수박수박수박수? 문제 설명 길이가 n이고, "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다. 제한 조건 n은 길이 10,000이하인 자연수입니다. 입출력 예nreturn 3 "수박수" 4 "수박수박" import java.util.*; class Solution { public String solution(int n) { StringBuilder builder = new StringBuilder(); for (int i = 1; i
-
[Spring] 어노테이션 @ExceptionHandlerBack-end/Spring 2022. 4. 12. 16:06
안녕하세요 이번 포스팅은 ExceptionHandler 어노테이션에 대해서 알아보겠습니다. HTML 화면 오류 vs API 오류 웹 브라우저에서 HTML 화면을 제공할 때는 오류가 발생하면 BasicErrorController를 사용하는 게 편합니다. 이때는 단순히 5xx, 4xx 관련된 오류 화면을 보여주면 됩니다. BasicErrorController는 이런 메커니즘을 모두 구현해두었습니다. 그런데 API는 각 시스템 마다 응답의 모양도 다르고, 스펙도 모두 다릅니다. 예외 상황에 단순히 오류 화면을 보여주는 것이 아니라, 예외에 따라서 각각 다른 데이터를 출력해야 할 수도 있습니다. 그리고 같은 예외라고 해도 어떤 컨트롤러에서 발생했는가에 따라서 다른 예외 응답을 내려주어야 할 수 있습니다. 한마디..
-
[Spring] 스프링이 제공하는 ExceptionResolverBack-end/Spring 2022. 4. 12. 15:26
안녕하세요 이번 포스팅은 스프링이 제공하는 ExceptionResolver에 대해서 알아보겠습니다. 스프링 부트가 기본으로 제공하는 ExceptionHandler는 다음과 같습니다. HandlerExceptionResolverComposite에 다음 순서로 등록합니다. 1. ExceptionHandlerExceptionResolver - @ExceptionHandler를 처리합니다. API 예외 처리는 대부분 이 기능으로 해결합니다. 2. ResponseStatusExceptionResolver - HTTP 상태 코드를 지정해줍니다. 예) @ResponseStatus(value = HttpStatus.NOT_FOUND) 3. DefaultHandlerExceptionResolver - 스프링 내부 기본 ..
-
[Spring] API 예외 처리Back-end/Spring 2022. 4. 12. 14:59
안녕하세요 이번 포스팅은 API 예외 처리에 대해서 알아보겠습니다!! API 예외 처리 - 시작 HTML 페이지의 경우 지금까지 설명했던 것처럼 4xx, 5xx와 같은 오류 페이지만 있으면 대부분의 문제를 해결할 수 있었습니다. 그런데 API의 경우에는 생각할 내용이 더 많습니다. 오류 페이지는 단순히 고객에게 오류 화면을 보여주고 끝이지만, API는 각 오류 상황에 맞는 오류 응답 스펙을 정하고, JSON으로 데이터를 내려주어야 합니다. 지금부터 API의 경우 어떻게 예외 처리를 하면 좋은지 알아보겠습니다. WebServerCustomizer import org.springframework.boot.web.server.ConfigurableWebServerFactory; import org.spring..