Return Values
- String
- 뷰 이름을 나타내는 문자열을 반환하면, 스프링 웹 MVC는 뷰 리졸버(ViewResolver)를 사용하여 해당 뷰를 찾아 렌더링한 후 클라이언트에게 전달한다.
- 뷰 템플릿 기본 경로
- src/main/resources/templates
- @ResponseBody
- 메서드에 사용되며, 반환 값이 HttpMessageConverter를 통해 response body으로 직렬화된다.
- 클래스 수준에서도 지원되며, 이 경우 모든 컨트롤러 메서드에 상속된다.
- 비동기 요청과 반응형 타입과 함께 @ResponseBody사용 가능
- @ResponseStatus(HttpStatus.OK) 애노테이션을 통해 응답 코드 설정 가능
- MVC Config의 메시지 변환기(Message Converters) 옵션
- 메시지 변환을 구성하거나 사용자 정의 가능
- 반환 값이 객체일 때
- 자동으로 해당 객체를 JSON 형식으로 변환하여 데이터를 전달
- 변환 과정은 내부적으로 사용되는 JSON 라이브러리, 주로 Jackson 라이브러리를 사용하여 수행
- 예시코드
// User 객체 public class User { private Long id; private String name; private String email; // 생성자, 게터, 세터 생략 }
// controller @GetMapping("/user/{id}") @ResponseBody public User getUser(@PathVariable Long id) { User user = userService.findById(id); return user; }
// 반환되는 JSON 데이터 { "id": 1, "name": "John Doe", "email": "john.doe@example.com" }
- 반환 값이 기본형일 때
- 해당 값을 자동으로 JSON 형식으로 변환하여 데이터를 전달
- 기본형 값의 경우 JSON 객체로 변환되지 않고, 기본형 값을 그대로 반환
- 예시코드
// controller
@GetMapping("/count")
@ResponseBody
public int getCount() {
return 42;
}
// 반환되는 JSON 데이터
42
ResponseEntity<B>
- 특징
HttpEntity
상속HttpEntity
: HTTP 메시지의 헤더, 바디 정보 설정 가능ResponseEntity<B>
:HttpEntity
+ HTTP 응답 코드 설정 가능
- HTTP 상태 코드, 헤더 및 본문을 포함한 완전한 HTTP 응답 구성 가능
- 반환되는 객체에 데이터를 포함시키거나 별도로 설정 가능
HttpMessageConverter
를 통해 HTTP 메시지 직접 입력 가능
→ 프로그램 조건에 따라 응답 코드를 동적으로 변경 가능
- 특징
'Develop > Spring' 카테고리의 다른 글
[Spring Web MVC] Exceptions - @ControllerAdvice (0) | 2023.04.17 |
---|---|
[Spring Web MVC] Exceptions - @ExceptionHandler (0) | 2023.04.17 |
[Spring Web MVC] Handler Methods - MethodArgument (0) | 2023.04.17 |
[Spring Web MVC] Request Mapping - consumes, produces (0) | 2023.04.17 |
[Spring Web MVC] Request Mapping - Parameters, headers (0) | 2023.04.17 |