@ResponseBody
이 어노테이션은 리턴값을 HTTP 응답 바디에 직접 넣겠다는 의미이다.
사용 예시
@Controller
@ResponseBody
public class MyController {
@GetMapping("/hello")
public String hello() {
return "Hello, world!";
}
}
@Controller만 사용한 경우
@Controller
public class MyController {
@GetMapping("/hello")
public String hello() {
return "hello"; // → templates/hello.html 같은 뷰를 찾음
}
}
- 스프링은 리턴값을 뷰(View)의 이름으로 처리한다.
📌 @ResponseBody를 @Controller와 같이 쓰면?
@Controller
@ResponseBody
public class MyController {
@GetMapping("/hello")
public String hello() {
return "Hello, world!"; // → 응답 본문에 "Hello, world!" 그대로 출력
}
}
- 리턴값을 그대로 HTTP 응답 본문(body)에 넣는다.
- 텍스트, JSON, XML 등으로 응답할 수 있다.
✅ 정리
어노테이션 조합 | 동작 방식 |
@Controller | 리턴값 -> 뷰 이름으로 처리 |
@Controller + @ResponseBody | 리턴값 -> 응답 본문에 그대로 반환 |
@RestController | 위 두 개를 합친 것, 모든 메서드에 @ResponseBody 적용 |
ResponseEntity
Spring에서 HTTP 응답을 세밀하게 제어할 수 있게 해주는 클래스이다. 단순히 데이터(String, JSON 등)만 반환하는게 아니라 상태 코드 + 헤더 + 바디까지 모두 직접 설정할 수 있다.
사용 예시
@GetMapping("/hello")
public ResponseEntity<String> hello() {
return ResponseEntity.ok("Hello!");
}
- 상태 코드를 바꾸고 싶다거나, 헤더도 넣고 싶을 때 사용한다.
주요 기능
기능 | 설명 |
상태 코드 지정 | 200, 201, 400 등 직접 설정 가능 |
응답 본문 | String, JSON, 객체 등 다양하게 가능 |
응답 헤더 | 원하는 헤더 직접 설정 가능 |
📌 1. 단순 OK 응답
return ResponseEntity.ok("성공");
- 상태코드 : 200 OK, 본문 : "성공"
📌 2. 상태 코드 변경 (예: 201 Created)
return ResponseEntity.status(HttpStatus.CREATED).body("생성 완료");
- 상태코드 : 201, 본문 : "생성 완료"
📌 3. 헤더 포함
HttpHeaders headers = new HttpHeaders();
headers.add("Custom-Header", "이름");
return ResponseEntity
.status(HttpStatus.OK)
.headers(headers)
.body("헤더 포함 응답");
📌 4. 에러 응답
return ResponseEntity
.status(HttpStatus.BAD_REQUEST)
.body("잘못된 요청입니다.");
'자바 > 스프링' 카테고리의 다른 글
[스프링] 프로필(Profile)이란? (1) | 2025.07.08 |
---|---|
[스프링] @RequestParam 어노테이션 (0) | 2025.07.03 |
[스프링] 요청 매핑 어노테이션 (0) | 2025.07.03 |
[스프링] application.properties 파일 (2) | 2025.07.02 |
[스프링 프레임워크] 기본 개념 정리 1 (22) | 2023.10.18 |