주요 인터페이스 목록
확장 가능하나 대부분의 기능은 다 구현되어있다.
HandlerMapping
0 = RequestMappingHandlerMapping : 애노테이션 기반의 컨트롤러인 @RequestMapping에서 사용
1 = BeanNameUrlHandlerMapping : 스프링 빈의 이름으로 핸들러를 찾는다.
HandlerAdapter
0 = RequestMappingHandlerAdapter : 애노테이션 기반의 컨트롤러인 @RequestMapping에서 사용
1 = HttpRequestHandlerAdapter : HttpRequestHandler 처리
2 = SimpleControllerHandlerAdapter : Controller 인터페이스(애노테이션X, 과거에 사용) 처리
핸들러 매핑으로 핸들러 조회
HandlerMapping을 순서대로 실행하여 핸들러 조회 -> 핸들러 반환
핸들러 어댑터 조회
순서대로 supports()를 호출
핸들러 어댑터 실행
1. 디스패처 서블릿이 조회한 어댑터를 실행하면서 핸들러 정보도 함께 넘겨준다.
2. 어댑터는 핸들러를 내부에서 실행 후 결과를 반환한다.
스프링 부트는 InternalResourceViewResolver 라는 뷰 리졸버를 자동으로 등록하는데,
이때 application.properties 에 등록한 spring.mvc.view.prefix,suffix 설정 정보를 사용해서 등록
스프링부트가 자동 등록하는 뷰 리졸버
1 = BeanNameViewResolver : 빈 이름으로 뷰를 찾아서 반환한다. (예: 엑셀 파일 생성 기능
에 사용)
2 = InternalResourceViewResolver : JSP를 처리할 수 있는 뷰를 반환한다.
...
@RequestMapping
RequestMappingHandlerMapping
RequestMappingHandlerAdapter
@Controller
@Component
있어 컴포넌트 스캔 대상)@RequestMapping
ModelAndView
@Controller
@RequestMapping("/spring")
public class SpringMember {
@RequestMapping("/save")
public ModelAndView save() ...
@RequestMapping("/show")
public void show()...
}
...
@GetMapping("/members")
public String members(Model model) {
...
model.addAttribute("members", members);
return "members";
}
@PostMapping("/save_member")
public String save_member (
@RequestParam("username") String username,
@RequestParam("age") int age,
Model model) {
...
Model.addAttribute("member", member);
return "save_result";
🔖 학습내용 출처