스프링 부트 프로젝트 생성 후 Controller 생성하기

2023. 11. 3. 03:22백엔드/Spring Boot

 

스프링 부트 프로젝트 실행하기 

1. spring initializr에 접속 후 원하는 스펙을 선택 후 프로젝트 파일 다운로드

2. 다운로드 받은 압축파일 압축 해제 후 build.gradle 파일을 사용하는 에디터에서 실행

 


 

🔎  Handler 와 Controller 어노테이션에 대하여 알아보자.

 

Handler (핸들러)

Spring Boot에서 핸들러(Handler)는 HTTP 요청을 처리하고 응답을 생성하는 데 사용되는 메서드 또는 컴포넌트이다. 

웹 주요 로직을 담당하며 클라이언트 요청을 처리하여 적절한 응답을 생성한다. 

 

Controller 클래스 : HTTP 요청을 처리하는 요청 핸들러

핸들러 메소드 : 컨트롤러 클래스 내에서 @GetMapping@RequestMapping 등의 요청 매핑 어노테이션을 사용하여 정의된 메소드 

@Controller
public class Test {
    // == 핸들러 메소드 == 
    @RequestMapping("/test")
    public String test() 
        return "Test"; 
    }
    // ==============
}

 

 

 

핸들러 메소드 종류  

@RequestMapping

HTTP 요청의 경로 대하여 실행시킬 클래스나 메소드를 연결시키기 위하여 @RequestMapping 어노테이션을 사용한다.

package com.example.demo.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/office-worker")
public class OfficeWorker {
    @RequestMapping("/finish-work")
    public String finishWork() {
        return "fin";
    }
    
 
    // 다양한 속성 설정
    @RequestMapping(
        value = "/user/{id}",
        method = RequestMethod.GET,
        headers = "User-Agent=Mozilla/5.0",
        params = "id=1"
    )
    public String getUserById(@PathVariable Long id) {
        // 사용자 정보 조회
        return "User Details: " + id;
    }
}

 

 

HTTP Method 타입 에 따라 사용하는 어노테이션 

아래 어노테이션은 @RequestMapping(method = RequestMethod.{HTTP Method})의 축약 버전이다. 

Ex. @RequestMapping(method = RequestMethod.GET

  • GetMapping
  • PostMapping
  • PutMapping
  • DeleteMapping

 

 

 

@Controller 와 @RestController 의 차이

컨트롤러를 생성하기 위해서는 @Controller 또는 @RestController 어노테이션이 사용된 클래스를 생성해야한다.

(주로 웹 페이지 프로젝트를 만들때에는 @Controller를 사용하고 API 프로젝트를 만들 때에는 @RestController를 사용한다.)

 

 

@Controller 

  • Spring MVC 프레임워크에서 사용
  • HTML 뷰 렌더링 및 페이지 네비게이션을 위한 컨트롤러 클래스를 정의할 때 사용
  • HTTP 요청을 처리한 후, 뷰 이름을 반환하고 뷰가 존재하지 않은 경우 에러가 발생
package com.example.demo.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;


@Controller
public class TestController {
    // Check your ViewResolver setup! 에러 발생
    @RequestMapping("/errTest")
    public String errTest() {
        return "Check your ViewResolver setup! 에러 발생";
    }

    @RequestMapping("/successTest")
    public String successTest() {
        return "successTest.html";
    }
}

 

 

@RestController

  • Spring MVC와 Spring Web에서 모두 사용
  • RESTful 웹 서비스 또는 웹 API를 개발할 때 사용
  • HTTP 요청을 처리한 후, 데이터를 반환하며, 반환된 데이터는 자동으로 JSON 또는 XML로 직렬화
package com.example.demo.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


@RestController
public class TestController {

    @RequestMapping("/test")
    public String test() {
        return "test";
    }
}

 

 

'백엔드 > Spring Boot' 카테고리의 다른 글

Controller,Service,Repository에서의 DI  (0) 2023.11.05
스프링 빈(Bean) 이란?  (0) 2023.11.05
Spring 계층 구조와 역할  (0) 2023.11.01
DI, IoC 개념  (0) 2023.11.01
Spring boot 프로젝트 생성하기  (1) 2023.09.08