springboot同功能註解差異
阿新 • • 發佈:2018-12-03
@Autowired與@Resource
@Resource的作用相當於@Autowired,只不過@Autowired按byType自動注入,而@Resource預設優先按 byName自動注入,如果沒有找到則以byType繼續尋找
1、例如:有介面 Iuserservice 和實現層 userserviceimpl;
@Autowired
Iuserservice userservice
@Resource
Iuserservice userservice
上述兩種程式碼效果一樣。
2、例如:有介面 Iuserservice 和兩個實現層 userserviceimpl,userserviceimpl2;
@Resource Iuserservice userserviceimpl //按照byName進行搜尋,可以找到類userserviceimpl並賦值 @Resource Iuserservice userserviceimpl2//按照byName進行搜尋,可以找到類userserviceimpl2並賦值 @Resource Iuserservice uservice //按照byName進行搜尋無果,按照byType搜尋後發現兩個實現類丟擲異常 @Resource(type="Iuserservice ") Iuserservice uservice //按照byType搜尋後發現兩個實現類丟擲異常 @Resource(name="userserviceimpl2") Iuserservice uservice //按照byName進行搜尋可以找到類userserviceimpl2並賦值 @Resource(name="userserviceimpl") Iuserservice uservice //按照byName進行搜尋可以找到類userserviceimpl並賦值
接下來再看看此種情況下@Autowired如何使用
@Autowired
Iuserservice userservice //按照型別查詢,兩個實現類丟擲異常
@Autowired
Iuserservice userserviceimpl2 //因為@Autowired預設只通過byType搜尋,這樣寫也不會通過byName搜尋,任然報錯
@Autowired @Qualifier(userserviceimpl2 )
Iuserservice userservice //正確寫法
有不足之處歡迎指出,謝謝!