곰돌이 놀이터
[Spring] 스프링 어노테이션(@, Annotation) 종류 본문
어노테이션(@, Annotation)이란?
Annotation은 Java5부터 새롭게 추가된 문법요소이다. 사전적으로는 "주석"이라는 의미를 가지고 있으며, 의미대로
자바 코드에 주석처럼 달아 특수한 의미를 부여해준다. 이 특별한 의미는 컴파일 타임 또는 런타임에 해석된다.
아래와 같이 클래스 내부 또는 클래스 바로 위에 '@'와 함께 시작하는 것이 어노테이션입니다.
이는 자바, Spring이 제공해 주는 것도 있고, 사용자가 직접 만들 수도 있다.
■ 어노테이션 용도
- @Override 어노테이션처럼 컴파일러를 위한 정보를 제공하기 위한 용도
- 스프링 프레임워크의 @Controller 어노테이션처럼 런타임에 리플렉션을 이용해서 특수 기능을 추가하기 위한 용도
- 컴파일 과정에 어노테이션 정보로부터 코드를 생성하기 위한 용도
※ 자바 리플렉션: 다른언어에는 존재하지 않는 특별한 기능, 컴파일 시간이 아닌 실행시간에 동적으로 특정 클래스의 정보를 객체를 통해 분석 및 추출해내는 프로그래밍 기법
■ 어노테이션 종류
어노테이션 | 설명 | 사용 |
@Controller | 스프링 MVC의 컨트롤러 객체임을 명시하는 어노테이션 | 클래스 |
@RequestMapping | 특정 URI에 미챙되는 클래스나 메소드임을 명시하는 어노테이션 | 클래스, 메소드 |
@RequestParam | 요청(request)에서 특정한 파라미터 값을 찾아낼 때 사용하는 어노테이션 | 파라미터 |
@RequestHeader | 요청(request)에서 특정 HTTP헤더 정보를 추출할 때 사용 | 파라미터 |
@PathVariable | 현재의 URI에서 원하는 정보를 추출할 때 사용하는 어노테이션 | 파라미터 |
@CookieValue | 현재 사용자의 쿠키가 존재하는 경우 쿠키의 이름을 이용해서 쿠키의 값을 추출 | 파라미터 |
@ModelAttribute | 자동으로 해당 객체를 뷰까지 전달하도록 만드는 어노테이션 | 메소드, 파라미터 |
@InitBinder | 파라미터를 수집해서 객체로 만들 경우에 커스터마이징 | 메소드 |
@ResponseBody | 리턴 타입이 HTTP의 응답 메시지로 전송 | 메소드, 리턴타입 |
@RequestBody | 요청(request)문자열이 그대로 파라미터로 전달 | 파라미터 |
@Repository | DAO 객체 | 클래스 |
@Service | 서비스 객체 | 클래스 |
@SessionAttribute | 세션상에서 모델의 정보를 유지하고 싶은 경우에 사용 | 클래스 |
계층형 Controller들을 사용하면 여러 정보들(요청과 Controller의 매핑 설정 등)을 XML 설정 파일에 명시 해줘야 하는데, 복잡할 뿐 아니라 설정 파일과 코드 사이를 빈번히 이동 해야하는 부담과 번거로움이 될 수 있다.
@MVC는 Controller 코드안에 어노테이션으로 설정함으로써 좀 더 편리하게 MVC 프로그래밍을 할 수 있도록 했다.
참고
'Back-End > Spring' 카테고리의 다른 글
[Spring] 스프링이란? (0) | 2018.06.29 |
---|
Comments