Spring Boot 문법
[다양한 어노테이션] @Autowired
여우비오냐
2024. 4. 4. 20:38
➤ 컨테이너에 등록되어 있는 Bean 들중 @Autowired로 명시한 클래스 타입과 같은 것을 자동적으로 연결한다.
주의) 똑같이 컨테이너에 Bean 으로 등록되어 있는 것끼리만 가능하다.
➤ 예제
@Autowired를 붙인 곳에 해당 하는 Bean을 찾지 못하였다면 예외를 던지게 된다.
위와 같은 상황을 방지하기 위해 다음과 같이 속성값을 줄 수 있다.
➤ Autowired 의 한계
- 후보 Bean 이 여럿 있으며 프로퍼티가 그룹형 (List, 배열, Map) 등이 아닐 때 제대로 연결되지 않는다.
➤ 후보 타입의 Bean이 여럿이라면 ( @Primary / @Qualifier / @Resource / @Inject)
1. @Primary
-특정한 Bean에 우선권을 부여하는 어노테이션
2. @Qualifier
-속성값으로 이름을 주어 후보 Bean을 명시하는 어노테이션
3. @Resource
- 간단히 @Autowired + @Qualifier 라고 생각하면 된다. 차이점이 있다면
@Resource 는 Bean 을 Bean 이름으로 연결이 안된다면 타입 순으로 찾고
@Autowired 는 Bean 을 Bean 타입으로 찾은 후 연결이 안된다면 이름으로 찾는다.
또한 @Resource 는 자바에서 지원하는 어노테이션이다.
4. @Inject
- 타입이 같은 빈이 여럿일 때엔 Custom Annotation을 작성해야 한다.