티스토리 뷰

Spring Annotation

- 자바 1.5부터 지원한다.

- 스프링은 어노테이션을 이용하여 빈과 관련된 정보를 설정할 수 있다.

 

 

 

 

Spring Framework 에서 어노테이션 사용하기

다음과 같은 설정들을 필요로 한다.

 

1. CommonAnnotationBeanPostProcessor 클래스를 설정파일에 bean 객체로 등록하여 annotation 적용

<bean class="org.springframework.beans.factory.annotation.CommonAnnotationBeanPostProcessor">

 

 

2. <context:annotation-config> 태그를 이용

@Autowired, @Required, @Resource, @PostConstructor, @PreDestroy 등의 annotation을 자동 처리해주는 bean post processor

 

 

3. <context:component-scan base-package=""> 태그를 이용

@Componenet, @Controller, @Service, @Repository 등의 annotation을 자동 처리

 

 

4. <mvc:annotation-driven> 태그를 이용

@RequestMapping, @Valid 등 spring mvc component 등을 자동 처리

HandlerMapping, HandlerAdapter를 등록하여 @Controller에 요청 연결

해당 설정이 없어도 component-scan이 있으면 mvc appliaction이 동작한다.

 

 

 


 

Spring Web MVC Framework 에서 어노테이션 사용하기

설정파일을 간결화하고, view 페이지와 객체 또는 메소드의 맵핑을 명확하게 할 수 있다.

 

4개의 stereotype annotation (component-scan에 의해 자동으로 등록)

 @Component : stereotype annotation의 조상

 @Controller : Spring MVC에서 컨트롤러로 인식

 @Service : 역할 부여 없이 스캔 대상이 됨. 비즈니스 클래스(Biz)에 사용

 @Repository : 일반적으로 dao에 사용되며, Exception을 DatatAccessException으로 변환

 

 

1. @Component

패키지 : org.springframework.stereotype

버전 : spring 2.5

클래스에 선언하여 해당 클래스를 자동으로 bean 등록

범위는 디폴트로 singleton이며 @Scope을 이용해 지정할 수 있다.

 

 

2. @Autowired

패키지 : org.springframework.beans.factory.annotation

버전 : spring 2.5

Autowired annotation은 spring에서 의존관계를 자동으로 설정할 때 사용한다.

이 어노테이션은 생성자, 필드, 메소드 세 곳에 적용이 가능하며 타입을 이용한 프로퍼티 자동 설정 기능을 제공한다.

즉, 해당 타입의 빈 객체가 없거나 2개 이상일 경우 예외를 발생시킨다.

프로퍼티 설정 메소드(setter) 형식이 아닌 일반 메소드에도 적용이 가능하고 프로퍼티 설정이 필수가 아닐 경우 @Autowired(required=false)로 선언한다. (기본값 : true)

byType으로 의존관계를 자동으로 설정할 경우 같은 타입의 빈이 2개 이상 존재하게 되면 예외가 발생하는데, Autowired도 같은 문제가 발생한다. 이럴 때 @Qualifier를 사용하면 동일한 타입의 빈 중 특정 빈을 사용하도록 하여 문제를 해결할 수 있다.

 

ex)

@Autowired

@Qualifier("test")

private Test test;

 

 

3. @Qualifier

패키지 : org.springframework.beans.factory.annotation

버전 : spring 2.5

@Autowired annotation이 타입 기반이기 때문에 2개 이상의 동일 타입 빈 객체가 존재할 시 특정 빈을 사용하도록 선언한다.

@Qualifier("beanName")의 형태로 @Autowired와 같이 사용하며 메소드에서 두 개 이상의 파라미터를 사용할 경우에는 파라미터 앞에 선언해야 한다.

 

 

4. @Required

패키지 : org.springframework.beans.factory.annotation

버전 : spring 2.0

필수 프로토타입을 명시하는 것으로, 프로퍼티 설정 메소드(setter)에 붙이면 된다.

필수 프로퍼티를 설정하지 않을 경우 빈 생성 시 예외를 발생시킨다.

 

 

5. @Repository

패키지 : org.springframework.stereotype

버전 : spring 2.0

dao에 사용되며 Exception을 DataAccessException으로 변환한다.

 

 

6. @Service

패키지 : org.springframework.stereotype

버전 : spring 2.0

@Service를 적용한 class는 비즈니스 로직(Biz)으로 등록된다.

 

 

7. @Resource

패키지 : javax.annotation.Resource

버전 : java 1.6 & jee5

애플리케이션에서 필요로 하는 자원을 자동 연결할 때 사용한다.

name 속성에 자동으로 연결할 빈 객체의 이름을 연결한다.

 

@Resource(name="testDao")

최근에 올라온 글
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Total
Today
Yesterday