[Spring] 스프링 Controller 구현 및 관련 어노테이션 알아보기

GaramFlow·2023년 11월 2일
0

1) 스프링 프로젝트 생성 및 Controller 구현해보기

(1) 스프링 프로젝트 생성

  • https://start.spring.io 를 통해 생성
  • 스프링부트 3.0 이상은 Java 17 이상이 필요
  • 해당 연습글에서는 dependencies에 Spring WebThymeleaf 사용

(2) Controller 클래스 생성하기

  1. src/main/java/com/example/demo/controller 패키지 생성 (프로젝트 생성 시 이름 등에 따라 경로가 바뀔 수 있음)
  2. 패키지 내부에 MainController.java 생성
package com.example.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class MainController {
    @GetMapping("test")
    public String main (Model model) {
        model.addAttribute("data", "TEST");
        return "test";
    }
}

(3) html 파일 생성하기

  1. src/main/resources/templates 경로에 test.html 생성하기
  2. html 코드 작성
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
<p th:text="${data}"></p>
</body>
</html>

(4) 결과물

Test.html


2) 어노테이션 간단하게 알아보기

(1) @Controller

  • Component 어노테이션의 특수한 형태 중 하나
  • 해당 어노테이션이 적용되면 스프링 빈으로 등록된다. 즉, Spring IoC 컨테이너가 관리하는 객체가 된다.
  • 주로 View를 반환하기 위해 사용한다.

(2) @ResponseBody

  • Controller에서 Data를 반환해야 할 때, 해당 어노테이션 활용 시 자바 객체를 JSON 형태 Data로 반환할 수 있다.
  • JSON 형태를 자바 객체로 변환해주기도 한다.
  • HTTP 응답 본문 (Response Body)에 작성된다.

(3) @RestController

  • @Controller@ResponseBody를 합친 어노테이션이다.
  • 주 목적은 JSON 형태로 객체 데이터를 반환하는 것이다.
  • Rest API 설계 시 필수적으로 사용하게 된다.

(4) @RequestMapping

  • 특정 HTTP 요청을 Controller의 메소드에 매핑하는 역할을 한다.
  • 클래스 및 메소드에 사용 가능하다.
  • URL 매핑, HTTP 메소드 지정, 헤더 및 파라미터 조건, 미디어 타입 지정을 할 수 있다.

예시

@RequestMapping(value = "/example", method = RequestMethod.GET)
public String getExample() {
	...
}
  • value : 매핑할 URL 패턴 지정
  • method : 요청 HTTP 메소드를 지정. 위의 예시의 경우 GET 요청에 대해서만 해당 메소드를 매핑한다.

(5) @...Mapping (Get, Post, Put, Delete)

  • @RequestMapping 의 단축 어노테이션
  • 특정 요청에 대한 단축 형태이다.
  • 사용 방법은 @RequestMapping와 같으며, 특정 파라미터가 포함된 요청만 매핑하기 등 간단하게 사용할 수 있다.

핸들러(Handler)란?

  • HTTP 요청을 처리하는 객체나 메소드를 말한다.
  • 클라이언트로 들어오는 요청을 받고 비지니스 로직을 실행한 후 알맞은 응답을 반환하는 역할이다.
  • 해당 글에서 작성한 Controller도 일종의 핸들러라고 할 수 있다.
profile
간단한 지식 저장 및 공유를 위한 블로그입니다.

0개의 댓글