Notice
Recent Posts
Recent Comments
Link
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
Tags
more
Archives
Today
Total
관리 메뉴

선진이네

[Spring] @Controller, @RequestMapping 본문

BackEnd/Spring

[Spring] @Controller, @RequestMapping

악마선진 2022. 4. 30. 16:30

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