Spring_IOC_Annotation_Resource

@Resource註解(使用頻率很高):先看一個例子

private UserDAO userDao;

	public UserDAO getUserDao() {
		return userDao;
	}
	
	@Resource(name="配置文件中Bean的名字(或者id)")
	public void setUserDao(UserDAO userDao) {
		this.userDao = userDao;
	}

 這樣容器會自動將Bean名字所對應的對象注入。

 

@Resource註解的注入規則(一定是按名字自動注入的:byName):

   1.@Resource指定了name屬性的值-->@Resource(name="xxx"),這樣容器會完全按照xxx去找配置文件,並且注入Bean,一旦沒有找到,就會拋出異常

   2.@Resource未指定name屬性的值。情況看起來有點複雜.

       1)如果註解定義在字段上,就按字段名去配置文件找,並自動裝配進容器

       2)如果註解定義在字段的setter方法上,則按對應的字段(如setUserDao-->userDao)去配置文件找,並自動裝配

     如果上面按照名字去找都沒有找到,則按type再去找,找到,自動裝配,找不到,拋出異常

 

爲什麼會這麼麻煩呢?因爲@Resource和@Autowire都可以定義到字段或者字段的setter方法上。

發佈了27 篇原創文章 · 獲贊 0 · 訪問量 451
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章