@Resource 和 @Autowired 的區別

 

@Resource  默認通過名稱注入 ,如名稱無找到則通過類型注入
@Autowired  默認通過類型注入,如存在多個類型則通過名稱注入

 

//@Resource 默認通過名稱注入 ,如名稱無找到,則通過類型注入


@Resource
private IUserService userService;

例一
存在一個實現類: UserServiceImpl.java 自動注入UserServiceImpl 實現


例二
如果存在多個實現類:UserServiceImpl.java 、  UserServiceImpl2.java 則拋出異常


例三
如果存在多個實現類:UserServiceImpl.java 、  UserService.java 則根據名稱注入UserService.java實現



//默認通過類型注入,如存在多個類型則通過名稱注入   

@Autowired
private IUserService userService;

例一
存在一個實現類: UserServiceImpl.java 自動注入UserServiceImpl 實現

例二
如果存在多個實現類:UserServiceImpl.java 、  UserServiceImpl2.java 則拋出異常

例三
如果存在多個實現類:UserServiceImpl.java 、  UserService.java 則根據名稱注入UserService.java實現



//@Qualifier 可以實現類指定名稱,例二則不會報錯

@Autowired
@Qualifier("userServiceImpl")
private IUserService userService;

 

總結:

    存在一個實現類都會注入進去,存在多個實現都會自動根據名稱進行注入,只不過判斷的先後順序不同。

 

@Resourcejdk提供

@Autowiredspring提供

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章