Nop原始碼分析二

2022-01-11 10:46:44 字數 1835 閱讀 5115

上文我們已經通過該行**:var typefinder = containermanager.resolve(); 從注入容器中獲取到了typefinder例項。

通過該例項進行以下操作。

var drtypes = typefinder.findclassesoftype(); 從bin所有程式集中獲取實現了idependencyregistrar介面的所有實現類。迴圈這些實現類病呼叫 void register(containerbuilder builder, itypefinder typefinder);方法來做其他事情。

通過反射能夠獲取到8個實現了該介面的例項,下面我們乙個個分析,實現了這些介面的類都做了什麼事情。

1,dependencyregistrar : idependencyregistrar

a:註冊http context and other related stuff,

b:註冊webhelper。 builder.registertype().as().instanceperhttprequest();

c:註冊程式集中的所有控制器。  builder.registercontrollers(typefinder.getassemblies().toarray());

f:註冊worker和store相關的類。

g:註冊所有實現類。

i:註冊發布訂閱服務類:

3,註冊和google相關的服務。

4,註冊:  builder.registertype().as().instanceperhttprequest();

5,註冊            builder.registertype().as().instanceperhttprequest();

6,   builder.registertype()

.withparameter(resolvedparameter.fornamed("nop_cache_static"));

7,註冊一些控制器和            builder.registertype().as().instanceperhttprequest();

8,註冊乙個和重量相關的服務類。

9,註冊broker類。

至此所有容器注入的工作全部完成,下面開始初始化一些工作。

所有的工作全部在  runstartuptasks();方法中完成。

startuptasktypes = typefinder.findclassesoftype(); 該行**獲取程式集中所有實現了istartuptask介面的的類。

迴圈遍歷實現類,並執行execute()方法。來完成所有的初始化工作,**如下:

foreach (var startuptask in startuptasks)

startuptask.execute();

2,初始化googleproductobjectcontext等。

4,set localization service for telerik 。

至此initialize engine context的工作全部完成。

enginecontext.initialize(false)執行完畢。

二 LinkedList原始碼分析

二 linkedlist原始碼分析 上篇看了下arraylist原始碼,這篇記錄下linkedlist原始碼分析 linkedlist 繼承 abstractsequentiallist 提供了對元素順序訪問的抽象 linkedlist 實現 deque介面,底層構成雙向鍊錶結構 linkedlis...

Spring原始碼分析(二)

針對spring中bean初始化時擴充套件類執行順序進行分析 通過getbean逐層最終到bean例項化前後呼叫的方法,主要是aware介面 beanpostprocessor initializingbean init method的呼叫順序 abstractbeanfactory dogetbe...

Jquery原始碼分析 二)

prk 2008 08 12 型別 說明 dom element 第乙個引數為dom元素,第二個引數不用。直接把dom元素存在新生成的jquery物件的集合中。返回這個jquery物件。構建jquery物件完成。string 第乙個引數為string有三種情況 1 html的標籤字串,html ar...