[우아한테크코스] 4월 19일 TIL

1 minute read

오늘 배운 것

  1. spring mvc 적용
  2. spring mvc 이론 정리

Spring MVC

  1. controller
    @RestController는 responseBody 자동생성으로 요청과 응답을 쉽게 주고받기 위한 controller
    @Controller는 view나 data를 적재적소에 사용하기 위한 controller
    @GetMapping("/")
    public String start() {
      return "start";
    }
    

    controller에서 service method를 method, mapping과 함께 연결해준다.

    • @Service가 service layer
      service에서 dao의 쿼리문을 호출에 원하는 값을 도출하여 비즈니스 로직을 수행한다.
    • @Repository가 dao layer
  2. 서버사이드렌더링
    기존에 chess를 spark로 구현할 때 “~~님 환영합니다.” 라는 문구를 띄우고 그 이름으로 사용자를 찾기 위해서 model.addAttribute를 사용하고 있었다.
    뿐만 아니라 spark에서는 항상 return render(model, "chess.html")과 같은 방식으로 렌더링을 하고 있었다.
    이를 spring으로 바꾸는 과정에서 어떻게 구현할지 몰라 주위 사람들에게 물어봤다.
    그 과정에서 modelAndView라는 것을 알게 되었고 서버사이드렌더링 방식에 대해서 알게 되었다.
    • 렌더링이란?
      서버에서 요청해서 받은 내용을 화면에 띄우는 것
      렌더링 과정은? loader가 정보를 불러와서 파싱을 통해 dom 트리로 만들고 브라우저는 렌더 트리를 구축해 css, 레이아웃 위치를 지정해 뿌려짐
    • 서버사이드렌더링이란?
      페이지를 이동할 때마다 새로운 페이지를 요청하는 것으로 html과 script를 브라우저로 전달하고 script를 실행시켜 데이터를 조회해서 html을 생성하는 방식이다.
      즉, 완성된 html을 받아서 화면에 띄우는 것이다.
      이는 요청할 때마다 새로고침이 일어나고 로딩할 때마다 다시 자원을 전달받고, 해석하고, 화면에 렌더링해야하기 때문에 성능에 문제가 많았다.
    • 클라이언트사이드렌더링이란?
      Single Page Application이란 처음에 전체 페이지를 로딩하고 데이터만 변경해가며 사용하는 어플리케이션이다.
      클라이언트사이드 렌더링은 사용자의 행동에 따라 필요한 부분만 다시 받아오기 때문에 빠르고 효율적이다.
      서버는 json만 보내주고 클라이언트가 자바스크립트로 받아서 렌더링한다.
  3. annotation의 동작 원리
    어노테이션은 주석이다. 프레임워크에 추가 정보를 제공해주고자 함이다.
    컴파일러에게 문법 체크 정보 제공, 빌드 시 코드를 자동 생성하도록 정보 제공, 런타임 시 특정 기능 실행토록 정보 제공
    어노테이션은 사실 파일 이름으로 존재한다.
    @Target({ElementType.대상})
    @Retention(RetentionPolicy.대상)
    public @interface 어노테이션_이름 {
      //..
    }
    

    이와 같이 어노테이션을 만들 수 있다.
    ElementType: annotationType, constructor, field, local_variable, method, package … Retention: class(런타임 시 삭제), runtime(런타임 시 유지), source(소스코드에 반영)