[Spring] 스프링 Validation 의 Errors 와 BindingResult
·
Java | Spring
Errors`org.springframework.validation.Errors` 인터페이스특정 개체에 대한 데이터 바인딩 및 유효성 검사 오류에 대한 정보를 저장하고 노출필드 이름은 일반적으로 대상 객체의 속성 명단일 스레드 지원 Errors (Spring Framework 6.2.3 API)Stores and exposes information about data-binding and validation errors for a specific object. Field names are typically properties of the target object (for example, "name" when binding to a customer object). Implementations may als..
[Spring] Interceptor 와 request.getInputStream()
·
Java | Spring
HttpServletRequestWrapper 커스텀interceptor, filter 등에서 getInputStream() 을 통해 한 번 request 바디 내용을 읽어들이면이후에 다른 filter 나 controller 에서 해당 내용을 읽을 수 없음 (일회용)⇒ 해당 내용을 저장해서 가지고 있다가 여러 번 반복해서 부를 수 있도록HttpServletRequestWrapper 를 상속받은 MyRequestWrapper 정의 MyRequestWrapperHttpServletRequestWrapper 상속생성자에서 request 의 Inputstream 을 읽어와서 전역 변수에 저장읽어들인 메시지 내용을 반복해서 제공할 수 있도록 `getInputStream()` 과 `getReader()` 오버라이딩..
[Spring] 예외 처리 - ExceptionResolver
·
Java | Spring
ExceptionResolver스프링 부트의 ExceptionResolver 우선 순위ExceptionResolver설명 우선 순위ExceptionHandlerExceptionResolver@ExceptionHandler 처리1ResponseStatusExceptionResolver상태 코드가 적용된 예외 처리2DefaultHandlerExceptionResolver스프링 내부 기본 예외 처리3 ExceptionHandlerExceptionResolver`@ExceptionHandler` 가 붙은 메서드를 통해 예외 처리를 할 수 있도록 설정하는 클래스`@ExceptionHandler` 사용법 : 메소드에 어노테이션을 선언하고 해당 메소드에서 처리하고 싶은 예외를 지정 → 해당 예외가 발생하면 이 메소드..
[Spring] @ControllerAdvice, @RestControllerAdvice
·
Java | Spring
@(Rest)ControllerAdvice 란모든 @Controller 가 붙은 빈에서 사용하는 `@ExceptionHandler`, `@InitBinder`, `@ModelAttribute` 가 붙은 메소드들을 한번에 처리할 수 있도록 도와주는 기능해당 컨트롤러 내에서 정의 시 해당 컨트롤러에서만 적용전역적으로 사용하고 싶을 때 `@(Rest)ControllerAdvice` 를 활용@ExceptionHandler`@Controller` 가 붙은 빈에서 발생한 예외를 잡아서 하나의 메서드에서 처리@ControllerAdvice // 모든 컨트롤러에서 발생하는 exception 처리public class GlobalHandler { @ExceptionHandler(CustomException.clas..
[Spring] @RequestParam, @RequestBody, @ModelAttribute
·
Java | Spring
@RequestParam1개의 HTTP 요청 파라미터를 받기 위해 사용required 기본값 true → 반드시 해당 파라미터가 전송되어야 함반드시 필요하지 않다면 required = false 설정defaultValue 옵션으로 기본값 설정 가능@RequestBody클라이언트가 전송하는 JSON (application/json) 형태의 HTTP 바디를 자바 객체로 변환`@RequestBody` 로 받는 데이터는 스프링의 MessageConverter 중 하나인 MappingJackson2HttpMessageConverter 를 통해 자바 객체로 변환됨 (ObjectMapper 클래스 사용)@ModelAttribute클라이언트가 전송하는 폼(form) 형태의 HTTP 바디와 요청 파라미터들을 생성자나 S..