Spring Framework 에서 사용되는 어노테이션으로, HTTP 요청 핸들러 메서드의 반환값을 HTTP 응답 본문으로 직접 전송하도록 지정하는 역할을 함. 이 어노테이션은 주로 JSON, XML 등의 데이터를 반환할 때 사용됨
@ResponseBody 를 사용하면, 메서드에서 반환된 데이터가 자동으로 HTTP 응답 본문에 직접 작성됨. 이 과정에서 반환된 객체는 JSON 또는 XML 등의 형식으로 직렬화(serialize) 되어 클라이언트에 전송됨@Controller 가 사용되고, 뷰 리졸버(Veiw Resolver)가 반환값을 JSP, HTML 등의 뷰로 렌더링함. 그러나 @ResponseBody 를 사용하면, 이러한 뷰 리졸버를 우회하고, 직접 데이터를 반환하게 됨.import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframewrok.web.bind.annotation.RestController;
@RestController
@RequestMapping("/api")
public class MyController {
@GetMapping("/hello")
@ResponseBody
public String sayHello() {
return "Hello, World!";
}
@GetMapping("/data")
@ResponseBody
public MyData getDate() {
return new MyData("example", 123);
}
}
class MyData {
private String name;
private int value;
public MyData(String name, int value) {
this.name = name;
this.value = value;
}
// getters and setters
}
@ResponseBodysayHello() 메서드는 "Hello, World!" 문자열을 반환하며, 이 문자열은 응답 본문에 직접 포함됨.getData() 메서드는 MyData 객체를 반환하며, 이 객체는 JSON 형식으로 직렬화되어 응답 본문에 포함됨@RestController 는 @Controller 와 @ResponseBody 를 결합한 형태로, @RestController 를 사용하면 클래스 내 모든 메서드에 자동으로 @RestponseBody 가 적용됨@RestController 가 아닌 일반 @Controller 에서 @ResponseBody 를 적용해 특정 메서드만 JSON 등을 반환하도록 설정할 수 있음.