@Qualifier
的用途,是去指定要注入的 Bean 的「名字」是什麼,進而解決同時有兩個同樣類型的 Bean 存在的問題。
因此在一般的情況下,我們只要使用 @Autowired
就可以注入 Bean,但是假設今天有兩個同樣類型的 Bean 存在時,那麼我們在使用 @Autowired
的時候,就必須同時去搭配 @Qualifier
,才能夠去選擇要注入的 Bean 是哪一個。
所以簡單來說,Spring Boot 就是先由 @Autowired
篩選 Bean 的類型、再由 @Qualifier
篩選 Bean 的名字,透過這樣子的連環組合拳來解決這個問題!
@Component
public class CanonPrinter implements Printer {
@Override
public void print(String message) {
System.out.println("Canon印表機: " + message);
}
}
@Component
public class Teacher {
@Qualifer("canonPrinter")
private Printer printer
}