어노테이션이란?
클래스나 메서드 , 속성 등에 @ 를 선언하여 사용하는 것입니다.
그 중 의존 객체 자동 주입(Automatic Dependency Injection) 에 속하는 Autowired, Resource, Inject 를 사용하려면
<context:annotation-config/> 구문을 꼭 xml 설정파일에 추가해주어야 합니다.
스프링 설정파일에서 <constructor-arg> 혹은 <property> 태그로 의존 객체 대상을 명시하지 않아도 스프링 컨테이너가 자동적으로 의존 대상 객체를 찾아 해당 객체에 필요한 의존성을 주입하는 것을 말한다.
만약에 생성자가 아닌 다른 곳에서 어노테이션을 사용할 경우 기본 생성자를 만들어야 합니다.
@Autowired
Autowired 는 속성, Setter, 생성자에 모두 사용 가능 하며 , 주입하려는 객체타입이 일치하는 객체를 자동으로 주입됩니다.
만약에 타입이 존재하지 않는다면 Bean id -> Qualifier -> 에러 발생 순으로 작동하게 됩니다.
@Qualifier
Bean의 타입(Class)가 동일할 경우, 스프링 컨테이너는 판단하지 못하므로 우선순위를 지정해주어야 합니다.
@Resource
Resource 는 속성, Setter에서 사용 가능 하며 , 주입하려는 객체이름이 일치하는 객체를 자동으로 주입됩니다. 생성자는 사용 할 수 없습니다. 만약에 이름이 존재하지 않는다면 Bean class -> Qualifier -> 에러 발생 순으로 작동하게 됩니다.
Resource Annotation 역시 Qualifier를 사용할 수 있습니다.
@Inject
@Inject를 사용하기 위해서는 maven이나 gradle에 javax 라이브러리 의존성을 추가해야한다.
Inject는 속성, Setter, 생성자에 모두 사용 가능 하며 , 주입하려는 객체타입이 일치하는 객체를 자동으로 주입됩니다.
Autowired와 비슷하지만 Qualifier 대신 명시적으로 Bean을 표기합니다.
만약에 타입이 존재하지 않는다면 Bean id -> Named-> 에러 발생 순으로 작동하게 됩니다.
@Qualifier("value") 대신 @Named(value="xml Bean id")를 입력합니다.
'Web Programming > Spring' 카테고리의 다른 글
6. Spring 로그인 만들기를 통한 기능 엿보기 (0) | 2020.04.05 |
---|---|
5. Spring 프로젝트의 구조 분석 (0) | 2020.04.04 |
4. Spring 웹 프로그래밍 설계 모델 (0) | 2020.04.03 |
2. Spring DI(Dependency Injection) (0) | 2020.03.31 |
1. Maven 의 개요 및 스프링의 이해 (0) | 2020.03.29 |