23.12.22 00:53 작성
·
608
·
수정됨
0
(스프링부트 3.0 이상인 상태에서)
@Controller 에노테이션을 붙이면 (스프링부트 서버 가동시!) 스프링컨테이너에 싱글톤빈으로 미리 등록이 되고 클라이언트로부터 예) @RequestMapping("get-form") 의 요청이 들어온다면
1.디스패처 서블릿은 모든 요청을 받을 수 있으므로 요청을 받는다.
디스패처서블릿은 @RequestMapping("~~")으로 (스프링 컨테이너에서 스프링빈으로 등록된 컨트롤러중) 에서 url 정보와 일치하는 컨트롤러의 메소드 정보를 조회한다.
디스패처 서블릿은 조회한 메소드정보를 호출할수 있는 RequestMappingHandlerAdapter 을 조회한다.
2번에서 핸들러 매핑을 통해 조회한 메소드정보를 RequestMappingHandlerAdapter 을 호출하면서 파라미터로 넘겨주어 핸들러 메소드가 실행하게 한다.
여기서 궁금한점은 핸들러 매핑정보를 확인할때 일단 컨트롤러가 스프링 빈(싱글톤 빈)으로 등록되어있어야 한다고 이해한 상태입니다.
등록이 되어있다면 초반에 매핑정보를 조회할때 스프링에 이미 등록되어있는 핸들러 목록(아래 캡처본)에서
1.BeanNameUrlHandkerMapping : "빈 이름으로 컨트롤러 조회" 를 먼저 거친 후 0=RequestMappingHandlerMapping("") 으로 1번으로 필터링이 된 컨트롤러안의 메소드가 실행되는것일까요?
1~5번 각각 답변 주시면 제 궁금중이 시원하게 풀릴것같습니다. 감사합니다. 초반에 스프링빈으로 등록된 컨트롤러를 먼저 찾아야 하니까 0번도 포함이라고 생각했습니다.!!
답변 2
0
2023. 12. 23. 17:19
안녕하세요. 수빈님
생각하신 내용이 모두 맞습니다. 추가로 마지막 부분은 다음에 답변을 달아두었습니다 🙂
https://www.inflearn.com/questions/1109982
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다.
스프링 MVC에서 @Controller와 @RequestMapping을 사용한 스프링 빈 등록과 핸들러 매핑에 관한 궁금증을 해결해 드리겠습니다. 아래 링크에서 유사한 질문과 해당 답변을 찾을 수 있습니다. 링크에 접속하시어 답변을 확인해 보시기 바랍니다.
감사합니다.