190412

Q1. Autowired 어노테이션 붙인 서비스 인터페이스의 구현체가 여러개인 경우에는 어떤 구현체..?

A1. Autowired를 처리할 때 Bean객체를 찾는 과정이 Type을 먼저 보고, 이후에 Qualifier로 지정된 id를 확인하여 의존성 주입함

ex)


// 인터페이스
public interface MagicInterface {

  void basicSpell();

  ...
}

=========================

// 구현체 Qualifier로 식별자를 "fire"로 지정
@Qualifier("fire")
public class FireMagic implements MagicInterface {
    ...
}

=========================

// Qulifier를 통해 서로 다른 구현체 주입
@Autowired
@Qualifier("fire")
private MagicInterface fireMagic;

@Autowired
@Qualifier("water")
private MagicInterface waterMagic;

@Autowired
@Qualifier("earth")
private MagicInterface earthMagic;

읽어볼 자료..
<생성자 기반의 의존성 주입>
Constructor Injection in Spring with Lombok | Baeldung