Spring的refresh 方法相關異常

2021-06-30 16:48:39 字數 1600 閱讀 6349

在此這前我們先看看refresh方法中又幹了些什麼?

public void refresh() throws bean***ception, illegalstateexception 

catch (bean***ception ex)

}}

protected void finishrefresh()

如果沒有呼叫finishrefresh方法,則lifecycleprocessor成員為null。

protected configurablelistablebeanfactory obtainfreshbeanfactory() 

return beanfactory;

}

@override

protected final void refreshbeanfactory() throws bean***ception

try

} catch (ioexception ex)

}

如果沒有呼叫obtainfreshbeanfactory()方法則beanfactory成員為null。

configurablelistablebeanfactory beanfactory = getbeanfactory();

if (logger.isdebugenabled())

} else }}

1. public static void main(string args) 

2. public static void main(string args)

3. public static void main(string args)

public void start()

super(parent);

setconfiglocations(configlocations);

if (refresh) }

@override

public final configurablelistablebeanfactory getbeanfactory()

return this.beanfactory;

}}

第三條異常訊息,異常堆疊出錯在context.refresh(),但是如果沒有設定父上下文的話context.setparent(parent),例子**是不會出現異常的。這是因為在refresh方法中的finishrefresh()方法呼叫了publishevent方法:

assert.notnull(event, "event must not be null");

if (logger.istraceenabled())

if (this.parent != null)

} "call 'refresh' before multicasting events via the context: " + this); }}

Spring原始碼中的refresh方法

1.呼叫preparerefresh 方法 此方法主要用於準備工作包括設定啟動時間,是否啟用標識位,初始化屬性源的配置。1 建立beanfactory物件 2 xml解析 傳統標籤解析 bean import等 自定義標籤解析 如 自定義標籤解析流程 a 根據當前解析標籤的頭資訊找到對應的names...

Spring 研究spring建立物件的方式

一共三種方式 1 呼叫預設建構函式。2 利用靜態工廠方法建立。3 利用例項工廠方法建立 呼叫預設建構函式建立物件 在 cn.google.spring.createobject.method public class helloworld public void hello public class...

refresh的停車場

題目鏈結 卡了好久,交了好多遍,總之各種原因,陣列記憶體大小,多組輸入,棧和佇列重置,以及演算法的一點點小問題。不過最後終於過了 refresh的停車場 該題需要棧與佇列的組合,停車場是棧,便道是佇列 停車場符合先進後出的原則,便道符合先進先出的原則,先進佇列的先進停車場 也先out,不再等待 in...