Hello World 응답하기 - 스프링부트 기초

Yunjisang·2023년 11월 19일

Spring boot 기초

목록 보기
3/3

첫 기능 만들기

@RestController

Spring Framework 4 버전부터 사용가능한 어노테이션

@Controller에 @ResponseBody가 결합된 어노테이션

컨트롤러 클래스 하위 메소드에 @ResponseBody 어노테이션을 붙이지 않아도 문자열과 JSON 등을 전송할 수 있음.

View를 거치지 않고 HTTP ResponseBody에 직접 Return 값을 보내게 됨.

Annotation ( 어노테이션, @ ) 이란 코드 사이에 주석처럼 쓰이며 특별한 기능을 수행하도록 하는 기술이다.
즉, 프로그램에게 추가적인 정보를 제공하는 메타데이터라고 할 수 있다.

@RequestMapping

MVC의 핸들러 매핑 ( Handler Mapping ) 을 위해서 DefaultAnnotationHandlerMapping을 사용.

특정 uri로 요청을 보내면 Controller에서 어떠한 방식으로 처리할지 정의를 한다.
이때 들어온 요청을 특정 메서드와 매핑하기 위해 사용하는 것이 @RequestMapping이다.

DefaultAnnotationHandlerMapping 매핑 정보로 @RequestMapping 어노테이션을 활용.

클래스와 메소드의 RequestMapping을 통해 URL을 매핑하여 경로를 설정하여 해당 메소드에서 처리

  • value : url 설정
  • method : GET, POST, DELETE, PUT, PATCH 등
@RequestMapping(value = "/hello", method = RequestMethod.GET)

/hello 라는 url로 GET, POST, PUT, DELETE를 만들기 위해선 아래와 같이 작성한다.

@RestController
public class HelloController {

    @RequestMapping(value = "/hello", method = RequestMethod.GET)
    public String helloGet(...) {
        ...
    }

    @RequestMapping(value = "/hello", method = RequestMethod.POST)
    public String helloPost(...) {
        ...
    }

    @RequestMapping(value = "/hello", method = RequestMethod.PUT)
    public String helloPut(...) {
        ...
    }

    @RequestMapping(value = "/hello", method = RequestMethod.DELETE)
    public String helloDelete(...) {
        ...
    }
}

스프링 4.3버전부터 메소드를 지정하는 방식보다 간단하게 사용할 수 있는 어노테이션을 사용할 수 있음.

  • @GetMapping
  • @PostMapping
  • @DeleteMapping
  • @PutMapping
  • @PatchMapping
@RequestMapping(value = "/hello")
public class HelloController {

    @GetMapping()
    public String helloGet(...) {
        ...
    }

    @PostMapping()
    public String helloPost(...) {
        ...
    }

    @PutMapping()
    public String helloPut(...) {
        ...
    }

    @DeleteMapping()
    public String helloDelete(...) {
        ...
    }
}

공통 url은 class에 @RequestMapping으로 설정을 해주고 @GetMapping, @PostMapping, @PutMapping, @DeleteMapping으로 간단하게 생략이 가능해졌다.

profile
BalhyoHongsam

0개의 댓글