@Controller와 @RestController의 차이

 

HTTP Response Body가 생성되는 방식의 차이.

 

기존의 MVC @Controller는 View 기술을 사용하지만, @RestController는 객체를 반환할때 객체 데이터는 바로 JSON/XML 타입의 HTTP 응답을 직접 리턴하게 된다.

 

@Controller의 메서드에 @ResponseBody를 선언해서 객체를 리턴 하는 방법도 있다.

 

 

실행 흐름 순서

 

@Controller의 실행 흐름

 

Client -> Request -> Dispatcher Servlet -> Handler Mapping -> Controller -> View -> Dispatcher Servlet -> Response -> Client 

 

@ResponseBody의 실행 흐름

 

Client -> Request -> Dispatcher Servlet -> Handler Mapping -> Controller (ResponseBody)-> Response -> Client 

 

@RestController의 실행 흐름

 

Client -> HTTP Request -> Dispatcher Servlet -> Handler Mapping -> RestController (자동 ResponseBody 추가)-> HTTP Response -> 

 

Client

 

 

ResponseEntity

 

별도의 View를 제공하지 않는 형태로 서비스를 실행한다. 예외의 상황에서 문제가 발생 할 수 있다.

 

개발자가 직접 결과 데이터와 HTTP 상태 코드를 직접 제어할 수 있는 클래스로 404, 500같은 HTTP 상태 코드를 전송하려는 데이터와 함께 전송 가능 하므로 세밀한 제어를 원하는 경우 사용 가능하다.

 

 

참조 블로그

 

http://doublesprogramming.tistory.com/105

 

 



가답안 채점 결과는 합격...


답 잘못쓰거나 밀려 쓰지만 않았다면.

'아이디어' 카테고리의 다른 글

XML을 1.0 버전만 써야 하는 이유  (0) 2018.09.10
프로그래머에게 가장 어려운 일  (0) 2018.07.15


1. Node.js의 정의

비동기 이벤트 처리 서버사이드 (네트워크 애플리케이션) 개발에 사용되는 소프트웨어 플랫폼.

개발 언어로는 자바스크립트를 사용한다.

내장 HTTP 서버 라이브러리를 가지고 있으므로, 아파치와 같은 웹 서버 어플리케이션이 없이도 동작한다.

비동기 방식이므로 다수의 연결을 동시에 처리 가능하다.

2. Node.js의 논 블로킹 방식


이는 오늘날 OS 스레드가 일반적으로 사용하는 동시성 모델과는 대조적입니다. 스레드 기반의 네트워크는 상대적으로 비효율적이고 사용하기가 몹시 어렵습니다. 게다가 잠금이 없으므로 Node의 사용자는 프로세스의 교착상태에 대해서 걱정할 필요가 없습니다. Node에서 I/O를 직접 수행하는 함수는 거의 없으므로 프로세스는 결과 블로킹 되지 않습니다. 아무것도 블로킹 되지 않으므로 Node에서는 확장성 있는 시스템을 개발하는 게 아주 자연스럽습니다. 


블로킹, 논 블로킹 참조 : http://ozt88.tistory.com/20

3. Node.js의 장점

비동기 I/O 처리 / 이벤트 위주 : Node.js 라이브러리의 모든 API는 비동기식입니다, 멈추지 않는다는거죠 (Non-blocking). Node.js 기반 서버는 API가 실행되었을때, 데이터를 반환할때까지 기다리지 않고 다음 API 를 실행합니다. 그리고 이전에 실행했던 API가 결과값을 반환할 시, Node.JS의 이벤트 알림 메커니즘을 통해 결과값을 받아옵니다.

빠른 속도 : 구글 크롬의 V8 자바스크립트 엔진을 사용하여 빠른 코드 실행을 제공합니다.

단일 쓰레드 / 뛰어난 확장성 :  Node.js는 이벤트 루프와 함께 단일 쓰레드 모델을 사용합니다. 이벤트 메커니즘은 서버가 멈추지않고 반응하도록 해주어 서버의 확장성을 키워줍니다.  반면,  일반적인 웹서버는 (Apache) 요청을 처리하기 위하여 제한된 쓰레드를 생성합니다. Node.js 는 쓰레드를 한개만 사용하고  Apache 같은 웹서버보다 훨씬 많은 요청을 처리할 수 있습니다.

노  버퍼링 : Node.js 어플리케이션엔 데이터 버퍼링이 없고, 데이터를 chunk로 출력합니다.

라이센스 :  Node.js 는 MIT License가 적용되어있습니다.

4. Node.js를 사용하면 좋은 분야

다음과 같은 분야에 Node.js 가 사용된다면 뛰어난 효율성을 달성 할 수 있습니다.


  • 입출력이 잦은 어플리케이션
  • 데이터 스트리밍 어플리케이션
  • 데이터를 실시간으로 다루는 어플리케이션
  • JSON API 기반 어플리케이션
  • 싱글페이지 어플리케이션

https://velopert.com/133 참조

+ Recent posts