官方:
idref元素用來將容器內其它bean的id傳給<constructor-arg/>
或 <property/>
元素,同時提供錯誤驗證功能。
上述bean定義片段完全地等同於(在運行時)以下的片段
也是就是說idref我可以獲取spring容器中的bean的name的值(一個字符串),而不是bean的實例。
而ref是獲取這個bean的實例。用來實現注入功能。
假如只是想獲取bean的名稱 採用idref
使用idref
標記允許容器在部署時 驗證所被引用的bean是否存在。而value方式,傳給client
bean的targetName
屬性值並沒有被驗證。任何的輸入錯誤僅在client
bean實際實例化時纔會被發現(可能伴隨着致命的錯誤)。
理解是:idref注入的是字符串,也就是你定義那個bean的id的字符串值,ref注入的是bean實例
用idref注入時,如果直接使用bean,小弟預計情況是拋空指針異常,又或者,IOC容器根本啓動不來
idref 暫時沒有使用過,也不知道該在什麼場景下試用,總體來說,感覺用處不大,以上是小弟愚見,有錯請指出