- 프로젝트 내 org.zerorc.controller 패키지 폴더에 SampleController라는 이름의 클래스를 작성한다.
< SampleController 클래스 >
package org.zerock.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("/sample/*")
public class SampleController {
}
- SampleController의 클래스 선언부에는 @Controller라는 스프링 MVC에서 사용하는 어노테이션을 적용하고 있다.
- 작성된 SampleController 클래스는 자동으로 스프링의 객체로 등록되는데 servlet-context.xml에 그 이유가 있다.
< servlet-context.xml >
<context:component-scan base-package="org.zerock.controller" />
- servlet-context.xml에는 < context:component-scan > 이라는 태그를 이용해 지정된 패키지를 조사하도록 설정되어 있다.
- 해당 패키지에 선언된 클래스들을 조사하면서 스프링에서 객체 설정에 사용되는 어노테이션들을 가진 클래스들을 파악하고 핑요하다면 이를 객체로 생성해서 관리한다.
- 클래스 선언부에는 @Controller와 함께 @RequestMapping을 많이 사용한다.
- @RequestMapping은 현재 클래스의 모든 메서드들의 기본적인 URL 경로가 된다.
< SampleController 클래스 >
package org.zerock.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import lombok.extern.log4j.Log4j;
@Controller
@RequestMapping("/sample/*")
@Log4j
public class SampleController {
@RequestMapping("")
public void basic() {
log.info("basic................");
}
}
- SampleController는 Lombok의 @Log4j를 사용한다.
- @Log4j는 @Log가 java.util.Logging을 이용하는데 반해 Log4j 라이브러리를 활용한다.
- Spring Legacy Project로 생성한 프로젝트는 기본적으로 Log4j가 추가되어 있으므로 별도의 설정이 필요하지 않다.
- 프로젝트를 WAS에서 실행해보면 스프링이 인식할 수 있는 정보가 출력되는 것을 볼 수 있는데, 위와 같은 경우에는 아래와 같이 로그가 보인다.
INFO : org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping - Mapped "{[/],methods=[GET]}" onto public java.lang.String org.zerock.controller.HomeController.home(java.util.Locale,org.springframework.ui.Model)
INFO : org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping - Mapped "{[/sample/*]}" onto public void org.zerock.controller.SampleController.basic()
- 현재 프로젝트의 경우 '/'와 '/sample/*'는 호출이 가능한 경로라는 것을 확인할 수 있다.