spring의 동작환경

justindevcode·2022년 9월 26일
0

스프링부트

목록 보기
39/39
post-thumbnail

spring의 동작환경

Controller

스프링은 controller에 요청이오면 그에 해당하는 리턴을 통해 응답을준다

@Controller
public class HelloController {
 @GetMapping("hello")
 public String hello(Model model) {
 model.addAttribute("data", "hello!!");
 return "hello";
 }
}

localhost:8080/hello로 응답이 들어오면 @GetMapping("hello")에서 잡아서 리턴값인 hello를 resources:templates/ + hello + .html 을 반환해준다.

이 반환 방법에서 MVC와 API로 나뉠 수 있다.


MVC패턴

@Controller
public class HelloController {
 @GetMapping("hello-mvc")
 public String helloMvc(@RequestParam("name") String name, Model model) {
 model.addAttribute("name", name);
 return "hello-template";
 }
}

사실 위의 예시가 MVC 패턴이라고 볼수있다. model.addAttribute("name", name);을 통해서 name이라는 값이 View 즉 html에서 Thymeleaf를 통해 값을 사용 할 수 있다.

내가 이전에 Django의 MVT패턴에서 사용하던것과 유사하다.
잠깐 본거지만 Django Template Language 다른점도 있어서 신기하다 나중에 자세히 다뤄보겠다.


API

@Controller
public class HelloController {
 @GetMapping("hello-api")
 @ResponseBody
 public Hello helloApi(@RequestParam("name") String name) {
 Hello hello = new Hello();
 hello.setName(name);
 return hello;
 }
 static class Hello {
 private String name;
 public String getName() {
 return name;
 }
 public void setName(String name) {
 this.name = name;
 }
 }
}

@ResponseBody가 추가 되고 이런저런 코드가 추가되었지만 핵심은 보내고싶은 데이터에 대한 객체를 만들고 그객체를 리턴하게된다면 자동으로 객체가 JSON으로 변환되어 전송된다.

실제 html에 응답이 도착한것을 보면 {name:spring}이러한 모양으로 데이터 도착한게 보이는게 신기하다. 의외로 생각보다 간단하다면 간단한거같다. api형태라는것이

다만 더더욱 DB설계와 비즈니스로직을 정말 잘만들어야겠다는 생각이 든다. 아주 명확하게 필요한 정보만 객체로 만들어서 보내야하는 작업이니 여기서 고생길이 훤하다..

빨리 연습해야겠다.

profile
("Hello World!");

0개의 댓글