使用 @Autowired 的時候,到底是寫接口還是實現類?


場景:使用 @Autowired 的時候,到底是寫接口還是實現類?

答案:寫的接口

解析:來自網友的回答 :這個其實是創建了實現類的對象但引用了接口類型,即 "InjectionDao injectionDao = new InjectionDaoImpl ()", 這個其實是 Java 多態性(向上轉型)的一種應用。在實現類處加 @Repository 注解,意思就是 new InjectionDaoImpl (), 而在 InjectionServiceImpl 中定義屬性 InjectionDAO injectionDAO 就是將 new 出來的這個 InjectionDaoImpl 對象向上轉型為 InjectionDao 類型。

注意:

  若一個接口被多個實現類,實現的時候

  @Autowired,Spring 會按 byType 的方式尋找接口的實現類,將其注入。存在多個實現類,應該指定名字,可以通過 byName 注入的方式。可以使用 @Resource 或 @Qualifier 注解。

  例如:

@Service("menuService1")
public class MenuServiceImpl implements IMenuService 

@Service("menuService2")
public class MenuServiceImpl implements IMenuService 

    @Autowired
    @Qualifier("menuService1")
    private IMenuService menuService;
    
    @Autowired
    @Qualifier("menuService2")
    private IMenuService menuService;

  

 


免責聲明!

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



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