[Spring] 컨트롤러를 위한 Annotation 개념정리

2021. 1. 20. 10:55Study/spring

XML로 설정할 떄의 url과 컨트롤러의 매핑방식

 

/index

public class IndexController implements Controller{

          public ModelAndView handleRequest(HttpServletRequest..){

       }

}

 

/hello

public class helloController implements Controller{

          public ModelAndView handleRequest(HttpServletRequest..){

       }

}

 

 

<bean id="/index" class="webprj.controller.IndexController"/>

<bean id="/hello" class="webprj.controller.helloController"/>

 

bean이라는 태그로 urlr과 컨트롤러 클래스를 매핑

url과 매핑되는 처리 단위는 클래스

사용자의 요청이 들어오면 Controller 인터페이스를 이용해서 실제 컨트롤러를 실행

 

 

Controller ctrl =new[];

ctrl.handelRequest(request);

 

분리와 연결의 단위는 캡슐

사용자의 요청이 들어오면 (/index,/hello) 스프링이 제공하는 Front Controller가 요청을 몰아서 받게되고

사용자의 요청을 수행할수있는 적절한 컨트롤러를 찾아서 호출해준다.

 프론트컨트롤러는 서블릿으로 만들어지고 컨트롤러는 포조클래스로 만들어진다.

 

 

 

ANNOTAION으로 매핑을 설정

 

/index

public class IndexController implements Controller{

          @RequestMapping("index")

          public ModelAndView handleRequest(HttpServletRequest..){

       }

}

 

/hello

public class helloController implements Controller{

          @RequestMapping("index")

          public ModelAndView handleRequest(HttpServletRequest..){

       }

}

 

ANNOTAION으로 매핑을 설정하게 되면 설정단위를 메소드 단위로 변경이 가능하다

어노테이션 URL매핑은( @RequestMaping )클래스에 붙는게 아니라 함수에 붙는다.!!!

MVC가 스캔을 해서 @가 붙어 있는 함수를 찾아 호출하게 해준다!!

이제 인터페이스의 제약이 없기 떄문에 하나의 클래스로 묶어서 만들어준다

 

 

 

컨트롤러 객체생성과  URL 매핑을 위한 설정

<context:component-scan base-package="..."/>

<mvc:annotation_driven/>

 

실제 객체로 인식될수 있도록 @Controller를 선언하여

컨트롤러가 클래스가 존재하는 패키지명을  통해 어노테이션을 찾아갈수있게끔 해준다