어노테이션에 대해 정리를 시작하며 첫 번째로 정리했던 @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/ 경로로 들어가면 아래와 같이 나오게 된다.


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

- 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 |