전체 글(319)
-
Exceptions
@ExceptionHandler는 스프링 MVC에서 발생하는 예외를 처리하는 메서드를 정의할 수 있도록 해줍니다. 이 어노테이션을 사용하면 특정 예외가 발생했을 때 해당 예외를 처리하는 메서드를 지정할 수 있으며, 예외를 처리한 후 적절한 HTTP 응답을 반환할 수 있습니다.@Controller 또는 @ControllerAdvice 클래스에서 사용되며, 예외가 발생하면 지정된 메서드가 호출됩니다.기본 개념예외 처리: @ExceptionHandler 가 적용된 메서드는 컨트롤러에서 발생한 예외를 처리할 수 있습니다. 이 메서드는 발생한 예외 타입을 아규먼트로 받아 처리할 수 있으며, HTTP 응답을 리턴할 수 있습니다.예외 매칭: 예외 처리는 발생한 예외의 상위 클래스나, 중첩된 원인 예외(cause ex..
2024.10.09 -
Validation
스프링 MVC는 컨트롤러 메서드에서 유효성 검사(Validation)를 지원하며, 이를 통해 요청 데이터가 정확한지 검증할 수 있습니다. 유효성 검사는 두 가지 수준에서 적용될 수 있습니다.메서드 파라미터 단위의 유효성 검사: @ModelAttribute, @RequestBody, @RequestPart에 적용할 수 있으며, 이러한 파라미터가 @Valid나 @Validated로 주석 처리되면 개별적으로 검증됩니다.메서드 레벨의 유효성 검사: 메서드 파라미터나 메서드 자체에 @Constraint(예: @Min, @NotBlank 등)를 선언하여 검증할 수 있습니다. 메서드 검증은 메서드 파라미터뿐만 아니라 중첩된 객체의 유효성 검사까지 적용됩니다.주요 개념@Valid와 @Validated: 요청 데이터를 ..
2024.10.09 -
@InitBinder
@InitBinder 어노테이션은 스프링 MVC에서 WebDataBinder를 초기화하고 사용자 정의 바인딩 로직을 설정하는 데 사용됩니다. WebDataBinder는 HTTP 요청에서 전달된 파라미터를 특정 객체에 바인딩할 때 사용되는 중요한 역할을 담당합니다.@InitBinder의 주요 역할요청 파라미터를 객체에 바인딩: HTTP 요청에서 전달된 데이터를 모델 객체에 바인딩할 때 데이터 형 변환 및 유효성 검사에 관여합니다.문자열 데이터를 객체 속성 유형으로 변환: 요청에서 전달된 값(일반적으로 문자열)을 모델 객체의 속성 유형에 맞게 변환합니다. 예를 들어, 날짜 형식의 문자열을 Date 객체로 변환하는 등의 작업을 수행합니다.HTML 폼을 렌더링할 때 객체 속성을 문자열로 변환: 객체 데이터를 문..
2024.10.09 -
Model
@ModelAttribute 어노테이션은 스프링 MVC에서 모델 객체를 생성하거나 초기화하는 데 사용됩니다. 모델은 뷰에 데이터를 전달하기 위한 컨테이너로, 주로 HTML 템플릿과 함께 사용되지만, 비동기 응답에서도 데이터를 처리하는 데 사용될 수 있습니다.@ModelAttribute는 크게 세 가지 경우에 사용됩니다:컨트롤러 메서드의 파라미터에 사용: 요청과 함께 전달된 데이터를 모델 객체에 바인딩합니다.메서드 레벨에서 사용: 모델을 초기화하거나 데이터를 추가하기 위한 메서드로, 주로 뷰에서 필요한 데이터를 미리 설정해둡니다.리턴값을 모델 속성으로 추가: 메서드의 리턴값을 모델에 속성으로 추가할 수 있으며, 이를 통해 모델 데이터를 뷰에 전달할 수 있습니다.@ModelAttribute의 주요 용도메서드..
2024.10.09 -
Handler Method : Jackson JSON
Spring MVC는 Jackson 라이브러리를 사용하여 JSON 형식의 데이터를 직렬화하고, Jackson의 Serialization Views 기능을 지원합니다. 이를 통해 객체의 모든 필드를 렌더링하지 않고, 특정 조건에 따라 일부 필드만 선택적으로 렌더링할 수 있습니다. JSON 뷰 기능을 사용하는 방법기본 개념Spring에서 @ResponseBody나 ResponseEntity를 사용하여 JSON 데이터를 반환하는 경우, Jackson의 @JsonView 애노테이션을 이용하여 특정 필드만 직렬화할 수 있습니다. @JsonView는 객체의 특정 필드에 대해서만 특정 뷰를 활성화하여 직렬화할 수 있는 기능을 제공합니다.예제 1: @JsonView를 이용한 직렬화컨트롤러 예시아래 예시에서는 UserC..
2024.10.09 -
Handler Method : ResponseEntity
ResponseEntity는 HTTP 응답 본문, 상태 코드, 그리고 응답 헤더를 함께 처리할 수 있는 스프링의 강력한 기능입니다. @ResponseBody는 주로 응답 본문만 직렬화하여 반환하는 반면, ResponseEntity는 상태 코드와 헤더를 포함한 더 많은 정보를 제어할 수 있습니다.기본 개념ResponseEntity는 HTTP 응답의 상태 코드와 헤더를 포함하여 응답을 더 세부적으로 제어할 수 있습니다. 예를 들어, 응답의 HTTP 상태 코드, ETag(헤더), 응답 본문 등을 함께 설정할 수 있습니다.본문: 응답의 내용, 보통 JSON, XML, 문자열 등의 데이터를 포함할 수 있습니다.헤더: 응답에 포함될 다양한 HTTP 헤더를 설정할 수 있습니다. 예를 들어, ETag, Cache-Co..
2024.10.09