在此這前我們先看看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...