본문 바로가기
Study_Framework

[Spring] Annotation 정리

by 타블로 2016. 8. 6.
@Controller: 스프링의 컨트롤러 객체임을 명시하는 annotation.(클래스에서 사용)
 
@Repository: DAO 객체(클래스에서 사용)
 
@Service: 서비스 객체(클래스에서 사용)
 
@RequestMapping: 특정 URI에 매칭되는 클래스 또는 메소드 임을 명시하는 annotation(클래스와 메소드에서 사용)
 
@RequestParam: request에서 특정한 파라미터의 값을 찾아낼 때 사용하는 annotation(파라미터에서 사용)
 
@RequestHeader: request에서 특정 HTTP 헤더 정보 추출 시에 사용하는 annotation(파라미터에서 사용)
 
@PathVariable: 현재의 URI에서 원하는 정보를 추출 시에 사용하는 annotation(파라미터에서 사용)
 
@CookieValue: 현재 사용자의 쿠키가 존재하면 쿠키의 이름을 이용하여 쿠키의 값을 추출하는 annotation(파라미터에서 사용)
 
@ModelAttribute: 자동으로 해당 개체를 뷰까지 전달하도록 만드는 annotation(메소드, 파라미터에서 사용)
 
@SessionAttribute: 세션 상에서 모델의 정보를 유지하고 싶은 경우에 사용(클래스에서 사용)
 
@InitBinder: 파라미터를 수집해서 객체로 만들경우에 커스터마이징(메소드에서 사용)
 
@ResponseBody: 리턴 타입이 HTTP의 응답 메시지로 전송(메소드, 리턴타입에서 사용)
 
@RequestBody: request 문자열이 그대로 파라미터로 전달(파라미터에서 사용)
 

@Required : 메소드를 통해 값을 주도록 강요함. (property 안적어줬을 때 에러)

@Required 사용하려면
<bean class="org.springframework.beans.factory.annotation.RequiredAnnotationBeanPostProcessor"/>
위의 형태는 너무 길어서 context 사용(동일한 효과) 

<context:annotation-config />

 

@Autowired : 내부적으로 Setter가 생성. Bean의 자동 삽입을 위해 사용. (type 으로 매핑)

@Autowired를 사용하려면
<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/>

위의 형태는 너무 길어서 context 사용(동일한 효과) 아래의 한줄을 적어주고 객체 생성에만 충실하면 된다!

<context:annotation-config />

 

@Qualifier : @Autowired를 name 으로 매핑하고 싶을 때 함께 사용.

 

@Resource : Bean의 자동 삽입을 위해 사용. (name 으로 매핑)

 

@Scope : 스프링에서 관리하는 Bean은 Singleton 이 디폴트.

Singleton : 싱글톤으로 객체를 한 개만 생성

Prototype : 사용자 요청별로 별개의 객체를 생성

 

@Component : 객체 생성. Bean 생성.

@Component을 사용하려면

<context:component-scan base-package="패키지명" />
context:component-scan 만 있으면 context:annotation-config 도 필요 없다!

@Service : 해당 클래스가 Service Bean 임을 지정.


@Repository : 해당 클래스가 Repository Bean 임을 지정. (DB 관련 내용은 Repository 사용)

 

@PostConstruct : 생성자 수행 후 수행. JDK가 지원.

 

@PreDestroy : 응용 프로그램 종료 직전에 수행되어 마무리 작업. JDK가 지원. 내부적으로 수행되어 콘솔에 출력 안됨.

 

@Value : 초기치로 부여할 때 사용. 사용 시 @Autowired를 생성자에 써줘야 함.

 

 

스프링에서는 기본적으로 클래스 선언부 위에 @Component가 붙어 있으면 스프링 빈으로 생성.

그러나 보통 실무인 경우에 다음과 같이 한다.
Controller 클래스 에는 @Controller
Service 클래스 에는 @Service
DAO 클래스 에는 @Repository

 

참고로! 버전업 될 때 마다 새로운 어노테이션(Annotation) 계속 등장