작성
·
334
0
스프링부트 프로젝트를 설계하고 있는데, 지금까지는 그냥 @Controller에 api 요청도 @ResponseBody로 다 때려박는 식으로 코딩을 했습니다.
그런데 api 요청만을 따로 관리하는 @RestController를 생성하는 것이 나중에 유지보수에 더 편할까요?
Controller들의 분리 및 관리를 어떻게 하는 것인지 궁금합니다.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
희찬님의 질문에 대해 답변 드립니다. 스프링부트에서 @Controller
와 @RestController
의 사용은 해당 컨트롤러의 역할에 따라 달라질 수 있습니다.
@Controller
는 주로 뷰를 반환하는데 사용되는 반면, @RestController
는 RESTful 웹 서비스를 구축할 때 사용됩니다. @RestController
는 클래스에 @Controller
와 @ResponseBody
를 결합한 어노테이션이기 때문에, JSON이나 XML과 같은 형태로 객체 데이터를 HTTP 응답 본문으로 직접 반환할 수 있습니다. 이는 API 요청을 처리하는 데 특히 유용합니다.
즉, 페이지 뷰를 반환하는 로직과 API를 통해 데이터를 주고받는 로직을 구분하여 관리하고 싶다면, @Controller
와 @RestController
를 분리하는 것이 유지보수 측면에서 더 효율적일 수 있습니다. 이 방식은 각각의 컨트롤러가 명확한 책임을 가지고 있으므로 코드의 가독성을 높이고, 프로젝트의 구조를 더 명확하게 만드는 데 도움이 됩니다.
따라서, API 요청만을 다루는 부분에 대해서는 @RestController
를 사용하는 것이 좋으며, 뷰를 반환해야 하는 경우에는 @Controller
를 사용하는 것이 바람직합니다. 이를 통해 각각의 역할에 맞는 컨트롤러를 효과적으로 관리할 수 있습니다.
참고하시면 좋을 정보 링크를 남깁니다.
- Spring Boot Reference Documentation 에서의 @RestController
와 @RequestMapping
어노테이션 설명: MVC Annotations