μ§€κΈˆκΉŒμ§€λŠ” @Component annotation 이 뢙은 Coach type 의 class κ°€ ν•˜λ‚˜λ°–μ— μ—†μ—ˆλ‹€.

κ·Έλ ‡λ‹€λ©΄, λ§Œμ•½ μ—¬λŸ¬κ°œκ°€ μžˆμ—ˆμ„ κ²½μš°μ— μ–΄λ–€ Bean object λ₯Ό inject ν•΄μ•Ό ν• κΉŒ?

Using Qualifiers

@Qualifiers annotation 을 μ‚¬μš©ν•¨μœΌλ‘œμ¨ 문제λ₯Ό ν•΄κ²°ν•  수 μžˆλ‹€. Qualifier λ₯Ό ν†΅ν•˜μ—¬ νŠΉμ • type 에 λŒ€ν•œ Bean λ“€ μ€‘μ—μ„œ νŠΉμ • 이름을 κ°€μ§„ class λ§Œμ„ qualify, 즉 μžκ²©μ„ μ£ΌλŠ” 것이닀.

Qualifiers - Test

μš°μ„  Qualifier λ₯Ό μ‚¬μš©ν•˜μ§€ μ•Šκ³  @Component annotation 을 μ‚¬μš©ν•˜μ—¬ 좔가적인 Bean 을 μƒμ„±ν•œ 이후에 Application 을 싀행해보면 λ‹€μŒκ³Ό κ°™λ‹€. 참고둜 Injection 방식을 Constructor Injection 으둜 μ„€μ •ν•˜μ˜€λ‹€.

보면 single bean 이 μš”κ΅¬λ˜μ§€λ§Œ 4κ°œκ°€ λ°œκ²¬λ˜μ—ˆλ‹€κ³  ν•œλ‹€. μ—­μ‹œ μ˜λ„λŒ€λ‘œ λ‚˜μ˜¨ 였λ₯˜μ΄λ‹€.

이제 Qualifier λ₯Ό μ‚¬μš©ν•˜μ—¬ 였λ₯˜λ₯Ό μˆ˜μ •ν•΄λ³΄μž.

// define a constructor for dependency injection  
@Autowired  
public DemoController(@Qualifier("footballCoach") Coach theCoach) {  
    myCoach = theCoach;  
}

μœ„μ™€ 같이 explicit ν•œ type casting 을 ν•΄μ£ΌλŠ” syntax 처럼 @Qualifier annotation 을 μ‚¬μš©ν•΄μ£Όλ©΄ λœλ‹€. Qualifier 둜 μ§€μ •ν•˜κ³  싢은 Bean 의 class 이름 μ²«κΈ€μžλŠ” lower case 둜 λ°”κΎΈμ–΄ μ§€μ •ν•΄μ£Όλ©΄ λœλ‹€.