@Primary 注解引出的問題


@Primary 注解

       剛看到這個,還以為是持久層的注解呢,以為和@Id差不多,一查才知道,這兩個風馬牛不相及,反倒和@Qualifier以及@Resource有點像了,但是相比而言,后面兩個更加的靈活。

      可以看這兩個博客博客一】【博客二

      我覺得第一篇博客講的不太對,結合第二篇應該就能理解第一篇中的【而@Qualifier這個注解則指定某個bean有沒有資格進行注入】這句話了。

      當一個接口,有幾種不同的實現類,如果一個以上的實現類使用了 bean 注解(也就是@Copmonent 或者 @Service),那么就會 spring 在自動注入的時候就不知道注入那個實現類了,因為每個實現類都是平等的,會報出如下異常:

org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of type [main.service.Singer] is defined: expected single matching bean but found 2: metalSinger,operaSinger

      @Primary 注解的意思就是以哪個實現類為主. 也就是spring容器知道該注入哪個實現類了.

      而 @Qualifier 就是給每個實現類取別名,注入的時候需要指定別名【 也就是在配置 bean 的時候需要使用 @Qualifier 指定 bean 的 name 屬性,同時在注入的時候需要使用 @Qualifier 指定 bean 的 name 屬性,使得 @Autowired 也不得不按照bean的 nama屬性進行注入了 】

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM