DI를 위한 Annotation에 대한 정리이다.
1. @Resource
<property> 선언과 비슷하게 주입할 빈을 id로 지정하는 방법이다. 수정자(setter)뿐만이 아니라 필드에도 붙일 수 있다.
a. 수정자가 있는경우
public class Hello {
private Printer printer;
...
@Resource(name="printer")
public void setPrinter(Printer printer){
this.printer = printer;
}
}
b. 필드에 직접 적용(field injection)
public class Hello {
@Resource(name="printer")
private Printer printer;
...
}
@Resouce Annotation선언에 name Property를 지정하지 않으면 자동으로 Spring이 Bean의 필드명을 가지고 injection을 수행한다.
2. @Autowired / @Inject
@Autowired는 스프링2.5부터 적용된 Annotation이고 @Inject는 JavaEE6의 표준 스펙에서 정의되어 있는것이다.
* 스프링으로 개발한 POJO를 앞으로 다른 환경에서도 사용할 가능성이 있다면 @Inject와 DIJ에서 정의한 애노테이션을 사용하는 게 좋다. 스프링만 사용할 코드라면 어느 것을 선택해도 좋은데, 대신 한 가지 종류만 선택해서 일관되게 사용하자.
@Resource와 다르게 이름 대신 필드나 프로퍼티 타입을 이용해 후보 빈을 찾는다.
생성자(constructor), 필드(field), 수정자 메소드(setter), 일반 메소드(method)에 적용이 가능하다.
@Autowired
Collection<Printer> printers;
@Autowired
Printer[] printers;
//이와 같이 Collection에도 적용이 가능하다.
3. @Qualifier
타입 외의 정보를 추가해서 자동와이어링을 세밀하게 제어할 수 있는 보조적인 방법이다.
...
-이 글의 모든 내용은 토비의스프링3(이일민) 책에서 발취하여 내가 보기 좋게 정리한것임.
'Spring' 카테고리의 다른 글
[ Spring ] Web Service - Restful 1 (0) | 2013.11.26 |
---|---|
[Spring] Spring에서 import 시 "classpath:"와 "classpath*:" 의 차이점 (0) | 2012.08.29 |
[Spring] spring 3.x log4j 사용 (0) | 2012.08.10 |
[Spring] annotation (0) | 2012.08.09 |
[Spring] annotation 설정 (0) | 2012.08.09 |