[Spring] @Controller, @RestController 어노테이션 정리

헌치·2022년 4월 25일
3

Spring

목록 보기
1/13

Spring MVC Controller

  • Spring MVC는 어노테이션 기반 프로그래밍 모델을 제공
  • @Controller, @RestController 컴포넌트로 구성
  • request mappings, request input, exception handling 등

@RestController

  • Spring 4.0에 도입
  • @Controller와 @ResponseBody 결합
  • 컨트롤러의 리퀘스트 핸들링 메소드에서 @ResponseBody annotation을 쓸 필요가 없음
@RestController
@RequestMapping("books-rest")
public class SimpleBookRestController {
    
    @GetMapping("/{id}", produces = "application/json")
    public Book getBook(@PathVariable int id) {
        return findBookById(id);
    }

    private Book findBookById(int id) {
        // ...
    }
}

@Controller

  • @Component 클래스의 특수화
  • 클래스 경로 스캐닝을 통해, 구현 클래스(@Component)를 자동 감지(auto-detection)
  • 보통 @Controller, @RequestMapping annotation을 함께 씀
    • 자동으로 반환 객체를 HttpResponse로 직렬화
@Controller
@RequestMapping("books")
public class SimpleBookController {

    @GetMapping("/{id}", produces = "application/json")
    public @ResponseBody Book getBook(@PathVariable int id) {
        return findBookById(id);
    }

    private Book findBookById(int id) {
        // ...
    }
}

리턴 타입 종류

  • @ResponseBody
  • HttpEntity, ResponseEntity
  • HttpHeaders
  • String
  • View
  • java.util.Map, org.springframework.ui.Model
  • @ModelAttribute
  • ModelAndView object
  • void
  • 등등...

출처

profile
🌱 함께 자라는 중입니다 🚀 rerub0831@gmail.com

0개의 댓글