[꼼꼼한 개발자] 꼼코더

19. 코드로 배우는 스프링 웹 프로젝트 - [스프링 MVC의 Controller] - @Controller, @RequestMapping 본문

Spring/코드로 배우는 스프링 웹 프로젝트

19. 코드로 배우는 스프링 웹 프로젝트 - [스프링 MVC의 Controller] - @Controller, @RequestMapping

꼼코더 2023. 1. 5. 01:11
반응형

👀 스프링 MVC의 Controller 

 

스프링 MVC를 이용하는 경우 작성되는 Controller는 다음과 같은 특징이 있습니다.

  • HttpServletRequest, HttpServletResponse를 거의 사용할 필요 없이 필요한 기능 구현
  • 다양한 타입의 파라미터 처리, 다양한 타입의 리턴 타입 사용 가능
  • GET 방식, POST 방식 등 전송 방식에 대한 처리를 어노테이션으로 처리 가능
  • 상속/인터페이스 방식 대신에 어노테이션만으로도 필요한 설정 가능

 

다른 프레임워크들과 달리 스프링 MVC는 어노테이션을 중심으로 구성되기 때문에

예제들을 작성할 때에도 각 어노테이션의 의미에 대해서 주의해가며 학습해야 한다.

 


👨🏻‍💻 @Controller, @RequestMapping(SampleController 클래스 작성)

org.zerock.controller 패키지 → SampleController 클래스 작성

 

SampleController 클래스 선언부에 @Controller라는 스프링 MVC에서 사용하는 어노테이션을 볼 수 있다.

@Controller 어노테이션은 클래스를 Spring MVC 컨트롤러로 표시하는 데 사용한다.

작성된 SampleController 클래스는 자동으로 스프링의 객체로 등록되게 된다.

 

그 이유는 servlet-context.xml의 보면 지정된 패키지 “org.zerock.conttoller”를 조사하도록 설정되어 있다.

조사하면서 객체(Bean) 설정에 사용되는 어노테이션들을 가진 클래스들을 파악하고 필요에 따라 이를 객체로 생성 후 관리한다.

클래스는 스프링의 관리 대상이 되면 파일 화면 클래스 아이콘에 작게 ‘s’ 모양의 아이콘이 추가된다.

클래스 선언부에는 @Controllter와 함께 @RequestMapping을 많이 사용한다.

@RequestMapping은 현재 클래스의 모든 메서드들의 기본적인 URL경로가 된다.

@RequestMapping 어노테이션은 클래스의 선언, 메서드 선언에만 사용할 수 있다.

 

예시로 SampleController 클래스를 다음과 같이 ‘/sample/*’이라는 경로로 지정했다면

다음과 같은 URL은 모두 SampleController에서 처리된다.

  • /sample/aaa
  • /sample/bbb
 

 

SampleController는 Lombok의 @Log4j를 사용한다.

@Log가 java.util.Logging을 이용하는데 반해 @Log4j 는 Log4j 라이브러리를 활용한다.

 

Spring Legacy Project로 생성한 프로젝트는 기본적을 Log4j가 추가되어 있으므로 별도의 설정이 필요 없다.

 

💁🏻‍♂️ 실행 결과

스프링이 인식할 수 있는 정보가 출력된다.

src/resoureces 폴더 속 log4j.xml의 모든 ‘info’를 ‘debug’로 수정하면 아래와 같은 결과가 보인다

현재 프로젝트의 경우 ‘/’와 ‘/sample/*’는 호출이 가능한 경로라는 것을 확인할 수 있다.


🪄 @RequestMapping의 변화

@RequestMapping는 몇 가지의 속성을 추가할 수 있다.

method 속성을 가장 많이 사용하는데 GET 방식, POST 방식을 구분해서 사용할 때 이용한다.

 

추후에는 @RequestMapping을 줄여서 사용하는 @GetMapping @PostMapping이 등장하는데

축약형의 표연이므로, 아래와 같이 비교해서 학습하는 것이 좋다.

 

@RequestMapping은 GET, POST 방식 모두 지원하는 경우 배열로 처리할 수 있다.

최근에는 PUT, DELETE 같은 방식 등도 많이 사용하고 있다.

 

RequestMapping(valie="/basic", method={RequestMethod.GET, RequestMethod.POST}
@GetMapping, @PostMapping


🧹 최종 정리

  • 스프링 MVC를 이용하는 경우 작성되는 Controller는
    • HttpServletRequest, HttpServletResponse를 거의 사용할 필요가 없다
    • 다양한 타입의 파라미터 처리, 다양한 타입의 리턴 타입 사용 가능하다
    • 전송 방식(GET, POST 등)에 대한 처리를 어노테이션으로 처리 가능
    • 어노테이션만으로도 필요한 설정 가능
  • 스프링 MVC는 어노테이션을 중심으로 구성되어 있다.
  • @Controller : 작성 클래스를 Spring MVC 컨트롤러로 표시하는 데 사용
  • 클래스에 작성한 @RequestMapping : 현재 클래스 안에 작성된 모든 메서드들의 기본적인 시작 URL경로 
  • 메서드에 작성한 @RequestMapping : 클래스 @RequestMapping 이후에 매핑될 URL 경로 
  • @RequestMapping는 여러가지 방법으로 method 속성을 추가할 수 있다.
    • 배열 방법 : RequestMapping(value="/basic", method={RequestMethod.GET, RequestMethod.POST}
    • 축약 방법 : @GetMapping("/basic"), @PostMapping("/apple")
 

 

위 내용은 코드로 배우는 스프링 웹 프로젝트 교재를 참고하여 작성되었습니다.

 

코드로 배우는 스프링 웹 프로젝트 - YES24

이 책은 Spring Framework(이하 스프링)를 사용해서 말 그대로 ‘웹 프로젝트’를 어떻게 진행하는지를 설명하는 책이다. 웹 프로젝트라고 거창하게 표현하지만, 좀 더 구체적으로는 스프링으로 웹

www.yes24.com

 
 

 

Comments