<목표>
1. 컨트롤러 응답
2. void, String, 자바빈즈(VO)
3. 컬렉션 List, Map
4, ResponseEntity<2,3,byte[]> : 2번, 3번, byte[]가 들어갈 수 있음
5. 요청 처리
Spring에서는 Annotation을 많이 사용한다. Annotation의 역할은 아래와 같다
사전상으로는 주석의 의미이지만 Java에서는 주석 이상의 기능을 가지고 있다
Annotation은 자바 소스 코드에 추가하여 사용할 수 있는 메타데이터의 일종이다 소스코드에 추가하면 단순 주석의 기능을 하는 것이 아니라 특별한 기능을 사용할 수 있다
Annotation은 클래스와 메서드에 추가하여 다양한 기능을 부여하는 역할을 한다 Annotation을 황용하여 Spring Framework는 해당 클래스가 어떤 역할인지 정하기도 하고, Bean을 주입하기도 하며, 자동으로 getter 나 setter를 생성하기도 한다
특별한 의미를 부여하거나 기능을 부여하는 등 다양한 역할을 수행할 수 있다
Spring에게 해당 Class가 Controller의 역할을 한다고 명시하기 위해 사용하는 Annotation이다
ex)
URL에 전달되는파라미터를 메소드의 인자와 매칭시켜, 파라미터를 받아서 처리할 수 있는 Annotation으로 사용한다
JSON형식의 Body를 MessageConverter를 통해 Java 객체로 변환시킨다
ex)
Body에 전달되는 데이터를 메소드의 인자와 매칭시켜, 데이터를 받아서 처리할 수 있는 Annotation으로 사용한다
클라이언트가 보내는 HTTP 요청 본문(JSON 및 XML 등)을 Java 오브젝트로 변환한다
클라이언트가 body에 json or xml과 같은 형태로 값(주로 객체)를 전송하면, 해당 내용을 Java Object로 변환한다
ex)
클라이언트가 전송하는 HTTP parameter, Body 내용을 Setter 함수를 통해 1:1로 객체에 데이터를 연결(바인딩)한다
RequestBody와 다르게 HTTP Body 내용은 multipart/form-data 형태를 요구한다
@RequestBody가 json을 받는 것과 달리 @ModenAttribute의 경우에는 json을 받아 처리할 수 없다
@ResponseBody는 메소드에서 리턴되는 값이 View로 출력되지 않고 HTTP Response Body에 직접 쓰여지게 된다
return 시에 json, xml과 같은 데이터를 return한다
ex)
Spring Framework에서 Bean 객체를 주입받기 위한 방법은 크게 아래의 3가지가 있다
Bean을 주입받기 위하여 @Autowired를 사용한다
Spring Framework가 Class를 보고 Type에 맞게(Type을 먼저 확인 후, 없으면 Name 확인) Bean을 주입한다
RequestMapping(Method=RequestMethod.GET)과 똑같은 역할을 한다
ex)
RequestMapping(Method=RequestMethod.POST)과 똑같은 역할을 한다
ex)