어노테이션에 대해 정리를 시작하며 첫 번째로 정리했던 @Component에서 잠깐 언급했던 어노테이션이다.

@Component가 단순히 사용자가 만든 클래스를 Bean으로 등록하는 어노테이션 이라면

@Controller는 @Component에서 개념을 더 추가한 Bean 등록 어노테이션이다.

 

스프링을 공부하며 절대 피할 수 없는 개념인 MVC 패턴에서 C 부분을 스프링에게 알려주는 기능을 가지고 있다.

즉, IoC 컨테이너에 @Controller로 지정된 클래스를 Bean으로 등록하면 스프링은 Bean을 스캔하며

'이 클래스는 Controller 역활을 수행하는 클래스구나' 라는 것을 알 수 있다.

 

@Controller는 스프링을 접하며 가장 처음으로 만나게 되는 어노테이션이 아닐까 싶다.

이클립스에서 MVC Project로 프로젝트를 만들면 자동으로 만들어지는 HomeController.java 에 들어있다.

 

@Controller를 타고 들어가면 다음과 같은 설명을 만날 수 있다.

 

파파고 번역기를 돌려보니 다음과 같이 말해준다.

 

* 이 어노테이션은 {@linkComponent @Component}의 전문화한 역할 갖는다.

* 클래스 경로 검색을 통해 구현 클래스를 자동 검색할 수 있다.

* 일반적으로 다음 기준에 따라 주석 처리된 처리기 방법과 함께 사용된다.

* {@link org.springframwork.web.bind.annotation.RequestMapping} 어노테이션을 요청한다.

 

이 설명에서 말하는 경로 검색 및 자동 검색은 servlet-context.xml 에서 다음의 부분을 말하는 것이 아닐까 싶다.

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

설명의 마지막 줄에 적힌 RequestMapping 은 @RequestMapping를 뜻하는 듯 하다.

 

MVC에서 Controller는 요청이 들어온다면 해당 요청에 맞는 작업을 View와 Model에게 전달하는 역활을 한다. 즉, Controller는 요청을 받을 수 있어야 하기에 @RequestMapping이 대부분의 경우에 따라오는 것 같다.

 

@Controller
@RequestMapping(value = "/test")
public class HomeController {
	
	private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
	
	/**
	 * Simply selects the home view to render by returning its name.
	 */
	@RequestMapping(value = "/currtime", method = RequestMethod.GET)
	public String home(Locale locale, Model model) {
		logger.info("Welcome home! The client locale is {}.", locale);
		Date date = new Date();
		DateFormat dateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG, locale);
		String formattedDate = dateFormat.format(date);
		model.addAttribute("serverTime", formattedDate );
		return "home";
	}
	
}
 

클래스에서 /test 를 맵핑하고 메소드에서 다시 /currtime을 맵핑하여

localhost:8080/controller/test/currtime/ 경로로 들어가면 아래와 같이 나오게 된다.

 

 

 

*참고 블로그

https://hardlearner.tistory.com/315

이미지 썸네일 삭제
스프링부트 - Controller란 무엇인가

스프링부트 Controller Spring Boot - Controller controller란 무엇인가? 사용자의 요청이 진입하는 지점(entry point)이며 요청에 따라 어떤 처리를 할지 결정해주며 단, controller는 단지 결정만 해주고 실질..

hardlearner.tistory.com

이미지 썸네일 삭제
스프링 MVC 컨트롤러 작성하기

- Develop OS : Windows10 Ent, 64bit - WEB/WAS Server : Tomcat v9.0 - DBMS : MySQL 5.7.29 for Linux (Docker) - Language : JAVA 1.8 (JDK 1.8) - Framwork : Spring 3.1.1 Release - Build Tool : Maven 3.6..

codevang.tistory.com

 

 

'SPRING FRAMEWORK > ANNOTATION' 카테고리의 다른 글

Lombok 어노테이션 정리  (0) 2022.08.29
@RequestMapping  (0) 2022.08.29
@Component  (0) 2022.08.29
@Bean  (0) 2022.08.28
Annotation / Meta-Data  (0) 2022.08.28

+ Recent posts