1. 程式人生 > >springboot同功能註解差異

springboot同功能註解差異

@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   //正確寫法 
	
	

有不足之處歡迎指出,謝謝!