spring獲取bean物件(六)

2021-08-21 12:10:43 字數 1179 閱讀 8608

下面我們接著abstractbeanfactory的dogetbean中方法,如果未從快取中獲取到例項物件就會進入到下面方法

if (mbd.issingleton()) 

catch (bean***ception ex)

});bean = getobjectforbeaninstance(sharedinstance, name, beanname, mbd);

}

我們重點看getsingleton方法

public object getsingleton(string beanname, objectfactory<?> singletonfactory) 

//再物件建立之前執行一些操作

beforesingletoncreation(beanname);

boolean newsingleton = false;

boolean recordsuppressedexceptions = (this.suppressedexceptions == null);

if (recordsuppressedexceptions)

try

catch (illegalstateexception ex)

}catch (beancreationexception ex)

}throw ex;

}finally

aftersingletoncreation(beanname);

}if (newsingleton)

}return singletonobject;

}}

我們重點看下面方法:

beforesingletoncreation

protected void beforesingletoncreation(string beanname) 

}

這裡再次校驗是否存在重複建立和迴圈建立問題

protected void addsingleton(string beanname, object singletonobject) 

}

然後進入到這個方法,這裡我們可以看到,他將物件放入到快取中並將其factorybean從工廠物件集合中刪掉

並從早建立快取中移除掉,並新增到註冊中。下面還有最為重要的方法createbean這個方法是spring中最為核心的方法。

Spring 實踐 獲取bean

spring在初始化時容器會根據配置檔案初始化所有配置的bean。在使用時有兩種常用方法可以在 中獲取例項。系統會自己根據名稱 型別去容器裡查詢對應的類並且注入,前提適用的場景必須是被spring所掃瞄到的類,且被注入到容器裡。換句話說就是 1 被spring掃瞄到。2 類被註解標記。在專案中,會遇...

讓Bean獲取Spring容器

實現beanfactoryaware介面的bean,擁有訪問beanfactory容器的能力,實現beanfactoryaware介面的bean例項被容器建立後,它會擁有乙個引用,該引用指向建立它的beanfactory。beanfactoryaware介面只有乙個方法 setbeanfactory...

spring獲取bean的方式

import org.springframework.beans.bean ception import org.springframework.beans.factory.nosuchbeandefinitionexception import org.springframework.contex...