spring原始碼 獲取BeanName《2》

2021-10-08 16:56:14 字數 862 閱讀 5797

獲取真正的 beanname

// 我們在呼叫 getbean 方法的時候傳遞的 name 可以是 bean 的別名,也可以是獲取 factorybean 例項的 name,所以當我們以 name 為 key 檢索 bean 的時候,首先需要獲取 name 對應的唯一標識 bean 的真正名稱 beanname,

// 這一過程位於 transformedbeanname(string name) 方法中:

// protected string transformedbeanname(string name)

// 上述方法首先會通過 beanfactoryutils 工具類方法判斷是不是獲取 factorybean,

// 如果是的話就去掉 name 前面的 「&」 字元,然後執行 canonicalname(string name) 邏輯:

// public string canonicalname(string name)

// 遍歷尋找真正的name,因為可能存在引用鏈

} while (resolvedname != null);

// 為什麼這裡當 resolvedname != null 的時候需要繼續迴圈呢,

// 這是因為乙個別名所引用的不一定是乙個最終的 beanname,

// 可以是另外乙個別名,這個時候就是乙個鏈式引用的場景,

// 我們需要繼續沿著引用鏈往下尋找最終的 beanname。

//這裡返回得是乙個規範得beanname

return canonicalname;

}

spring原始碼之bean包

測試 如下 建立乙個teacher類 public class teacher public void setdescription string description 在包下建立乙個spring.xml 在 測試 suppresswarnings deprecation public class...

Spring原始碼之 Bean註解解析

spring bean是乙個方法級別的註解,用於產生乙個被spring ioc容器所管理的bean。通常情況下,bean可以與 configuration和 component註解一起使用 configuration和 component是方法級別的註解 在預設情況下 bean註解所產生的bean是...

Spring原始碼解讀之bean注入依賴

在應用開發中 以應用開發人員的身份訪問設計元件時候,往往需要引用 或者呼叫其他組建的服務,這種依賴關係如果固定在元件設計中就會造成 依賴關係的僵化和維護難度的增加。在 spring 中通過ioc 容器把資源的獲取方 向反轉,讓 ioc容器住的管理這些依賴關係,將這些關係注入到元件中,那麼會讓這些依賴...