Spring Boot 문법

[다양한 어노테이션] @Autowired

여우비오냐 2024. 4. 4. 20:38

컨테이너에 등록되어 있는 Bean 들중 @Autowired로 명시한 클래스 타입과 같은 것을 자동적으로 연결한다.

     주의) 똑같이 컨테이너에 Bean 으로 등록되어 있는 것끼리만 가능하다.

 

예제

Bean으로 등록된 모든 UserData!

 

           @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을 작성해야 한다.