인프런 커뮤니티 질문&답변

경민님의 프로필 이미지
경민

작성한 질문수

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

스프링 MVC - 시작하기

@RequestMapping에 대하여

해결된 질문

작성

·

367

·

수정됨

1


[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예

[질문 내용]
1. 스프링 부트를 구동시켜서 톰캣 서버가 띄워지면 HandlerMapping 인터페이스가 애플리케이션 내에 존재하는 핸들러 매핑을 시도하는데 우선적으로 HandlerMapping 인터페이스의 구현체인 RequestMappingHandlerMapping 클래스가 @RequestMapping 어노테이션이 지정된 핸들러를 매핑해서 사용자가 해당 어노테이션으로 지정된 핸들러 중 하나를 요청할 경우 해당 핸들러가 반환되고

해당 핸들러에 대한 어댑터를 연결하고 호출하는데 필요한 구현체가 RequestMappingHandlerAdapter 로 이해했는데 맞을까요?

 

 

  1. 1번의 내용이 맞다면 @RequestMapping을 컨트롤러에 지정할 경우 해당 컨트롤러가 매핑 정보로 활용이 되는데 한 컨트롤러 내에 여러 메서드에 @RequestMapping을 지정할 경우 그 메서드들이 전부 컨트롤러가 되는 것인가요? 그렇다면 메서드들을 정의하고 있는 클래스도 컨트롤러인데 어떤 차이가 있는 건지 궁금합니다 !

  2. 그리고 추가로 컨트롤러는 클래스로 알고있는데 어떻게 메서드 레벨에 @RequestMapping을 지정할 수 있는지도 궁금합니다..

 

 

답변 1

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 경민님

자바의 리플렉션 같은 기술을 사용하면 메서드와 메서드에 붙은 애노테이션 정보들을 얻어올 수 있습니다. 이런 정보를 매핑 정보로 사용하면 어떤 클래스에 있는 어떤 메서드를 호출해야 하는지에 대한 정보를 얻을 수 있습니다.

따라서 한 컨트롤러 내에 여러 메서드에 @RequestMapping을 적용할 경우, 각 메서드는 서로 다른 요청을 처리할 수 있게 됩니다. 여기서 중요한 것은 클래스 자체가 컨트롤러이며, 각 메서드는 다른 요청을 처리하는 핸들러로서의 역할을 한다는 점입니다.

정리하면 우리가 배운 내용에 추가로 특정 메서드까지 분리해서 호출하는 것으로 이해하시면 됩니다 🙂

감사합니다.

경민님의 프로필 이미지
경민

작성한 질문수

질문하기