@Controller
와 @RestController
는 스프링 프레임워크에서 웹 애플리케이션 개발 시 사용되는 어노테이션으로, 주로 컨트롤러 클래스에 적용됩니다.
@Controller
어노테이션은 전통적인 스프링 MVC 컨트롤러를 정의할 때 사용됩니다.@ResponseBody
어노테이션이 없으면 메서드가 반환하는 값은 뷰의 이름으로 해석되고, 해당 뷰가 렌더링됩니다.@Controller
public class MyController {
@GetMapping("/example")
public String example(Model model) {
model.addAttribute("message", "Hello, Thymeleaf!");
return "example";
}
}
@RestController
어노테이션은 주로 RESTful 웹 서비스를 개발할 때 사용됩니다.@ResponseBody
어노테이션이 포함되어 있어서, 데이터 자체를 반환하고 뷰 렌더링을 수행하지 않습니다.@RestController
public class MyRestController {
@GetMapping("/api/example")
public Map<String, String> example() {
Map<String, String> response = new HashMap<>();
response.put("message", "Hello, REST!");
return response;
}
}
Thymeleaf 사용 여부:
@Controller
어노테이션이 적용된 클래스에서는 Thymeleaf와 같은 뷰 템플릿 엔진을 사용할 수 있습니다. @Controller
는 주로 서버 사이드 렌더링을 지원하는 경우에 활용됩니다.@RestController
어노테이션이 적용된 클래스에서는 주로 JSON이나 XML과 같은 데이터를 반환하므로, Thymeleaf와 같은 뷰 템플릿 엔진을 사용하는 것은 적절하지 않습니다. 대신, 클라이언트에게 데이터를 직접 전송하는 데 사용됩니다.