- Spring Controller
계층형 아키텍처의 Presentation Layer에 해당한다.
Client의 요청을 받고 Application Layer에 요청에 대한 처리를 위임하며 Client에 최종 응답하는(웹 페이지/데이터) 역할을 한다.
- Annotation
Java 소스코드에 추가적인 정보를 제공한다.
@로 시작하며 클래스, 메서드, 멤버변수, 파라미터 등에 붙인다.
- Annotation 유형
1. 자바 컴파일러에게 정보 제공
2. SW 툴에 의해 사용되어 코드 생성이나 추가 작업을 진행
3. run-time 시 특정 동작을 추가적으로 실행
Spring에서는 2, 3번째 유형이 주로 쓰인다. Annoation의 경우 2번에 해당한다.
- @Controller와 @RestController
요청을 받아서 처리하고 응답한다.
Controller 역할을 하는 클래스를 지정하며 클래스 상단에 명시한다.
하나의 Spring Application에 여러 개의 @Controller, @RestController가 붙은 클래스가 존재할 수 있다.
- 차이)
응답하는 형태가 다르다.
Controller는 view를 응답한다. (html 파일 등)
RestController는 data를 응답한다. (문자열, Json xml 등)
package com.example.controllerexercise.controller;
//import org.springframework.web.bind.annotation.RestController;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
//@RestController //문자열 자체(데이터)가 반환된다.
@Controller //문자열의 이름이 의미하는 templates 뷰의 내용이 브라우저에 응답한다.
public class HelloController {
@RequestMapping(value = "/")
public String hello() {
return "hello";
}
}
즉, localhost:8080 브라우저에
@RestController의 경우 "hello" 문자열이 출력되고
@Controller의 경우 hello라는 이름의 파일 내용이 출력된다.
*이때 파일 위치는 src > resource > templates 폴더 아래 위치해야 한다.

- @RequestMapping
특정 Request를 처리하는 메서드를 지정하며 클래스 또는 메서드 상단에 명시한다.
'BackEnd > spring' 카테고리의 다른 글
| [Spring Boot] Request 파라미터 - Query String / Path Parameter / Request Body (0) | 2023.06.07 |
|---|---|
| [Spring Boot] @RequestMapping과 URI (0) | 2023.06.07 |
| [Spring Boot] SW 아키텍처 - 계층형 아키텍처 패턴 Layered Architecture (0) | 2023.06.07 |
| [IntelliJ] web server failed to start. port 8080 was already in use. 오류 (0) | 2023.06.06 |
| [IntelliJ] finished with non-zero exit value 1 오류 해결법 (0) | 2023.06.06 |