본문 바로가기

질문과 답변/Java, Spring

Spring, Spring Boot (2)

 

ModelAndView, ModelMap, Model 3가지의 차이에 대해 설명하라.

더보기

WAS인 tomcat에서 동적 페이지를 반환하기 위해 사용하는 구현클래스들이다.

세 개 모두 

 

ModelAndView는 ModelAndView Bean을 사용하거나 새로 선언한 ModelAndView(개발자가 직접 생성)한 객체에

model을 addObject로 집어넣고, view를 setViewName으로 집어넣어서 modelAndView라는 객체에 한 번에 반환

 

modelMap는 model이되, map 객체이다. 그래서 map의 기능을 사용해 유연하게 model을 담아두고,

return을 String : viewname을 반환해서 사용

 

model은 간단한 데이터 전달에 사용함. 반환은 마찬가지로 String: viewname 을 반환.

 

@RestController 은 어떤 의미를 갖고, 어떤 역할을 하는가?

더보기

@RestController는 해당하는 controller를 ResponseBody를

반환하는 Controller Bean으로 사용하기 위한 어노테이션이다.

모든 메서드가 JSON을 반환하는 Controller를 사용할 경우에 이를 붙인다.

 

직렬화역직렬화는 무엇이고 왜 필요한지 설명하라

더보기

REST API를 통한 요청과 반환에서 모든 데이터는 1차원 문자열(JSON)으로 전송된다.

반면 백엔드 서버에서 모든 데이터는 2차원 객체(Object)로 다뤄진다.

따라서 1차원 문자열을 2차원 객체로 바꾸는 것이 역직렬화

2차원 객체를 1차원 문자열로 바꾸는 것이 직렬화이다.

 

 

Spring에서 REST API의 직렬화, 역직렬화를 담당하는 Bean은 무엇인지 설명하라.

더보기

HttpMessageConverter가 Spring에서 JSON, XML 등의

HTTP 요청과 응답 데이터를 Java 객체로 직렬화하거나 역직렬화하는 역할을 한다.

 

 

그리고 DTO에 getter함수를 설정하지 않았을 때 406 status code가 뜨는 이유는 무엇인가?
그리고 getter를 사용하지 않는 대체 방식은?

더보기

Spring에서 직렬화, 역직렬화 시 Jackson라이브러리를 사용한다.

Jackson 라이브러리는 JSON의 직렬화, 역직렬화 시 Java Bean 규약에 따라 데이터에 접근한다.

접근 제어자에 따라 필드 접근이 불가능한 경우도 있다.(private의 경우)

모든 경우에 사용가능한 getter 메서드를 찾는 게 Java Bean 의 표준이다.

데이터 접근시 getter메서드를 찾아 사용하기 때문에 406 not acceptable이 뜬다 (해당 리소스를 반환할수가 없다.)

 

대체방식은 해당하는 필드에 @JsonProperty를 사용하면 된다.

'질문과 답변 > Java, Spring' 카테고리의 다른 글

Java, JVM  (1) 2024.11.13
Spring, Spring Boot (4)  (1) 2024.11.06
Spring, Spring Boot (3)  (0) 2024.11.02
Spring, Spring Boot (1)  (1) 2024.10.25