선진이네
[Spring] @Controller, @RequestMapping 본문
Controller 애노테이션에 대해서 알아보겠다.
Controller 애노테이션 안에는 @Component가 존재한다.
따라서 @Controller만 있어도 컴포넌트 스캔의 대상이 된다. 따라서 스프링이 자동으로 스프링 빈으로 등록한다.
꼭 Class 레벨에 붙어있어야 한다. 메소드 레벨이 아닌.
물론 @bean으로 직접 등록해도 되지만 이 방식이 훨신 편하고 효율적일 것이다.
또, 스프링 MVC에서 애노테이션 기반 컨트롤러로 인식한다.
이 말 뜻은 RequestMappingHandlerMapping에서 "핸들러 정보구나, 매핑해야지!" 라 인식하여 꺼낼 수 있는 대상이 된다.
따라서 @Controller를 사용하면 자동으로 컴포넌트 스캔의 대상이 되고, 핸들러 매핑이 가능해진다.
참고로, @Controller는 뷰 리졸버를 실행하여, 뷰를 찾고 랜더링하는 개념이며, @RestController는 실질적인 메소드의 반환값을 반환하여 HTTP 메시지 바디에 바로 입력한다.
아래 코드로 예를 들겠다.
root/hello 페이지로 이동할때 아래 메소드를 실행하게 되는데, model에 data값으로 hello를 넣고 response/hello라는 html를 찾아 뷰 리졸버가 랜더링하여 뷰를 반환하게 되는 개념이다.
만약 @Controller가 아닌 @RestController 였다면 뷰가 아닌 HTTP 메시지로 response/hello를 입력했을 것이며,
메소드 선언시 @ResponseBody를 넣었어도 마찬가지로 HTTP 메시지로 입력하여 뷰를 랜더링 할 수 없었을 것이다.
다음으로, RequestMapping 애노테이션에 대해 알아보겠다.
보통의 경우 @RequestMapping("원하는 URL")로 사용하게 되는데, 해당 URL이 호출되면 이 애노테이션을 달고있는 메소드가 호출된다. 애노테이션 기반의 동작이므로 메소드의 이름은 임의로 지으면 된다.
'BackEnd > Spring' 카테고리의 다른 글
[Spring] JPA Auditing에 관하여, (0) | 2022.06.29 |
---|---|
[Spring] 자주 사용할 Lombok 애노테이션 (0) | 2022.06.29 |
[Spring] @Entity (0) | 2022.06.28 |
[Spring] DTO, DAO를 써야하는 이유 (0) | 2022.05.22 |
[Spring] @RequestBody, @ResponseBody (0) | 2022.05.02 |