[Spring] annotations 정리

2019. 10. 16. 14:15
반응형

Annotation(어노테이션 || 애너테이션 || 애노테이션)이란?

아하영어사전 - 애너테이션

http://aha-dic.com/View.asp?word=Annotation

대중적인 발음 - 어노테이션

여기선 어노테이션이라 칭하겠음

 

1.본래 주석이란 뜻으로 사용됨

2.인터페이스를 기반으로 문법

3.클래스에 특별한 의미 부여 || 기능 주입 가능

 

종류

1.built-in annotation

) Override

2.Meta annotation

) @Target

3.Custom annotation

)public @interface AnnotationName{}

 

쨋든 글에서 다루어볼것은 Spring 프레임워크에 들어있는 자주쓰이는 기본 어노테이션들을 다루어 보겠습니다.

 

[@Controller]

해당 클래스가 Controller임을 나타내기 위한 어노테이션

 

[@RequestParam]

Controller 메소드의 파라미터와 웹요청 파라미터와 맵핑하기 위한

어노테이션

 

[@ModelAttribute]

Controller 메소드의 파라미터나 리턴값을 Model 객체와 바인딩하기 위한 어노테이션

 

[@SessionAttributes]

Model 객체를 세션에 저장하고 사용하기 위한 어노테이션

 

[@RequestPart]

Multipart 요청의 경우, 웹요청 파라미터와 맵핑 가능한 어노테이션

 

[@CommandMap]

Controller메소드의 파라미터를 Map형태로 받을 때 웹요청 파라미터와 맵핑하기 위한 어노테이션(egov 3.0부터 추가)

 

[@ControllerAdvice]

Controller를 보조하는 어노테이션으로 Controller에서 쓰이는 공통기능들을 모듈화하여 전역으로 쓰기 위한 어노테이션(egov 3.0, Spring 3.2.X부터 추가)

 

[@RequestMapping]

 

이름

타입

설명

value

String[]

URL 값으로 매핑 조건을 부여 (default)

method

RequetMethod[]

HTTP Request 메소드 값을 매핑 조건으로 부여

사용 가능한 메소드는 GET, POST, HEAD, OPTIONS, PUT, DELETE, TRACE (7개)

params

String[]

HTTP Request 파라미터를 매핑 조건으로 부여

consumes

String[]

설정과 Content-Type request 헤더가 일치할 경우에만 URL이 호출됨

produces

String[]

설정과 Accept request 헤더가 일치할 경우에만 URL이 호출됨

 

 

[@ResponseBody

이 어노테이션이 붙으면 View Page를 리턴하는게 아니고 '데이터'를 리턴합니다.

즉, return type이 String이며 "home"이라는 문자열을 되돌려준다고 가정해볼께요.

@ResponseBody 어노테이션을  안붙이면 "home.jsp" 페이지를 보여주지만

어노테이션을 붙이게되면 "home"이라는 문자열 자체를 보여주게됩니다. 

 

[@RequestBody]

보통 AJAX + JSON을 사용할때 사용하는 어노테이션

요청받은 데이터의 Body(내용)의 전체내용을 파라메터로 받습니다.

 

View페이지의 AJAX요청의 contentType이 "application/json"이면 @RequestBody 어노테이션을 통해서만

웹서버에서 내용을 받을 수 있어요.

 

※주의 ResponseBody,RequestBody 문법 헷갈림 

 

[@RestController]

 

스프링 4 부터 @RestController 애노테이션의 경우 기존의 특정한 JSP 같은 뷰를 만들어 내는 것이 아닌REST

  식의 데이터 자체를 서비스하는 것을 말한다.

  - 스프링 3에는 해당 메소드의 리턴 타입에 @ResponseBody 애노테이션을 추가하는 형태로 작성되었다.

  - 기능은 달라진것이 없지만컨트롤러 자체의 용도를 지정한다는 점에서 변화가 있다고   있다.

  - URI 원하는 리소스를 의미한다.(복수형으로 작성)

  - URI에는 식별할  있는 데이터를 같이 전달하는 것이 일반적이다.

 

  // 컨트롤러 위에 어노테이션을 붙혀서 사용한다.

 import org.springframework.web.bind.annotation.RequestMapping;

 import org.springframework.web.bind.annotation.RestController;

 

 @RestController

 @RequestMapping("/sample")

 public class RestControllerExampleController {

 

 }

 

 만약 import 오류가 발생하면 maven webmvc 버전을 확인하라.

 

 @RestController JSP 같은 뷰를 만들어 내지 않는 대신에 데이터 자체를 반환하는데이때 주로 사용되는 것은 단순 문자열과 JSON, XML, 등으로 나누어   있다.

 

 

이상 글을 마칩니다. 글은 계속해서 공부하고 싶은 어노테이션들이 추가될 예정입니다.

반응형

+ Recent posts