스프링에서 자주 사용하는 모델인 MVC 중에서 Controller 생성 방법을 간단하게 알아보자!
MVC는 Model, View, Controller의 약자이고
Mode : 데이터, View : 화면, Controller : 로직
이라고 간단하게 설명할 수 있다.
웹 사이트의 경우 위와 같은 형상을 띈다.
물론 User가 View가 아니라 Controller로 바로 붙는 경우도 있을 수 있기 때문에
항상 위처럼 동작하는 것은 아니지만 대표적인 예로 쉽게 예시를 들어보았다.
Model에서 View로 점선이 있는 것은 View가 Model에서 바로 데이터를 긁어오는 경우도 있기 때문이다!
* MVC 치면 같은 아키텍처일텐데 다양한 Flow가 나와서 헷갈린다
그러면 Controller 구현 방법을 간단하게 알아보자.
@RestController
public class HelloWorldController {
@GetMapping("/")
public String HelloWorld(){
return "hello";
}
}
Spring에서는 어노테이션(@)을 통해 기능을 Mapping 할 수 있다.
그래서 어노테이션들을 잘 알아야하는데 하나씩 알아보자.
@RestController는 Json을 반환하는 컨트롤러로 만들어준다.
* 추후 사용할 @Controller는 주로 View(html)를 반환하기 위해 사용한다! (@ResponseBody를 통해 Json도 반환 가능)
@GetMapping은 Get 요청을 인식한다.
즉, "/"인 url (baseurl 혹은 root)를 인식하고 hello라는 값을 body에 담아 전달한다.
마찬가지로 @PostMapping, @PutMapping, @DeleteMapping도 존재한다.
각 HTTP Method와 url에 맞게 설계해주면 된다.
만약에 Router가 많아서 겹치는 부분을 따로 빼고 싶다면?
@RequestMapping("/hello")
@RestController
public class HelloWorldController {
@GetMapping("/")
public String HelloWorld(){
return "hello";
}
}
@RequestMapping을 통해 묶어줄 수 있다.
* RequestMapping은 클래스, 함수 모두 매핑할 수 있다.
그러면 아래 GetMapping이 대응하는 것은 "/"에서 "/hello/"를 대응하게 된다!
@RequestMapping의 경우 사용법이 좀 다양하다.
@RequestMapping(value="/hello")
@RequestMapping(value="/hello/*")
@RequestMapping(value={"/hello","/other"})
@RequestMapping(value="/hello", method=RequestMethod.GET)
@RequestMapping(value="/hello", params="check=OK")
@RequestMapping(value="/hello", headers="content-type=text/*")
위 처럼 와일드 카드를 url에 적용할 수 있고, HTTP Method, 파라미터, 헤더를 어노테이션단에서 확인하고 매핑할 수 있다.
'프로그래밍 > Spring' 카테고리의 다른 글
[Spring] 0. Intro, 개발 환경 구성하기 (0) | 2020.08.08 |
---|
댓글