🍳

초보 개발자의 일상

Java/SpringBoot

@Controller, @RestController 차이

dev.jelee 2024. 10. 23. 00:07

# 수익을 위해 작성한 글이 아닙니다.

# 수업을 받고 내용을 정리하기 위해 작성한 글입니다.


생각

Spring Boot 수업을 들으며 소스코드에 @RestController가 있었다.

이름만 봐도 Controller와 같은 기능을 가지고 있겠다고 생각을 했다.

그리고나서 주말에 게시판 목록, 상세, 로그인 구현하는 것을 복습을 하다가 뷰템플릿을 구현하는데 에러가 나서 왜 에러가 나는건가 싶어서 찾아보다가 내가 @RestController 어노테이션을 적용시켜놓고 html 문서로 연결하려고 했었던 것이었다.

 

그래서 @Controller와 @RestController의 차이를 제대로 이해하고 사용해야겠다는 생각에 찾아보았다.

 

 

@Controller

  • MVC 패턴에서 클라이언트의 HTTP 요청을 받아 관련 비즈니스 로직을 호출하여 처리하는 역할을 한다.
  • HTTP 요청이라면 GET, POST, PUT, DELETE 등등 이 있다.
  • 처리 결과에 따라 매핑된 뷰를 반환한다.
  • Thymeleaf와 같은 템플릿 엔진을 사용하는 경우에는 메서드에서 반환받은 값을 뷰에 전달하여 처리한다.
  • 비즈니스 로직을 담당하는 Service는 의존성 주입을 통해 주입된다.
  • 예외 처리는 일반적으로  @ExceptionHandler를 사용하여 Controller단에서 처리한다.

 

 

@RestController 

  • RESTful 웹 서비스를 구현하기 위한 API 역할을 하고, 클라이언트의 요청을 처리한다.
  • HTTP 요청이라면 GET, POST, PUT, DELETE 등이 있다.
  • JSON 또는 XML 형식의 데이터를 반환하고, 클라이언트와 데이터 교환을 지원한다.
  • 데이터 반환 시 @ResponseBody가 기본적으로 적용되며, 반환된 객체가 자동으로 JSON 또는 XML로 변환된다.
  • RESTful 서비스에서 발생한 예외를 @ExceptionHandler를 통해 에러 메세지를 반환할 수 있다.

 

 

요약을 하자면

  • @Controller는 MVC 패턴에서 클라이언트의 요청을 처리하고, 뷰를 반환하는데 주로 사용된다.
  • @RestController는 RESTfull 웹 서비스를 구현하고 API를 제공한다. 그리고 데이터를 JSON 또는 XML 형식으로 클라이언트에 반환한다.

 

더 쉽게 설명하자면

@ControllerAPI, 뷰 템플릿  둘다 지원. @RestControllerAPI만 지원.

 

 

'Java > SpringBoot' 카테고리의 다른 글

[MyBatis] useGeneratedKeys, keyProperty  (1) 2024.10.28
@Autowired  (0) 2024.10.23
Spring Bean (스프링 빈)  (0) 2024.10.23
SpringBoot(스프링부트) 수업 2일차  (0) 2024.09.24
SpringBoot(스프링부트) 수업 1일차  (1) 2024.09.23