autofac文件 例項生命週期

2022-03-12 06:01:31 字數 1613 閱讀 6165

開始

registering components

控制作用域和生命週期

用模組結構化autofac

xml配置

與.net整合

深入理解autofac

指導關於

詞彙表例項生命週期決定的在同乙個服務的每個請求中例項是如何共享的。

當請求乙個服務的時候,autofac會返回乙個單例 (single instance作用域), 乙個新的物件 (per lifetime作用域) 或者在某種上下文環境中的單例。比如 乙個執行緒 或者乙個http請求 (per lifetime 作用域)。

這條規則適用於顯示呼叫resolve從容器中檢索物件或者容器中為了滿足依賴而隱式實現的物件。

更深入的**請參考an autofac lifetime primer.

在其他容器中也稱作瞬態或者工廠,使用per dependency作用域,服務對於每次請求都會返回單獨的例項。

在沒有指定其他引數的情況下,這是預設是作用域。

builder.registertype();

// or

builder.registertype().instanceperdependency();

使用single instance作用域,所有對父容器或者巢狀容器的請求都會返回同乙個例項。

builder.registertype().singleinstance();
這個作用域適用於巢狀的生命週期。乙個使用per lifetime 作用域的component在乙個nested lifetime scope內最多有乙個例項。

當物件特定於乙個工作單元時,這個非常有用。比如,乙個http請求,每乙個工作單元都會建立乙個nested lifetime,如果在每一次http請求中建立乙個nested lifetime,那麼其他使用 per-lifetime 的component在每次http請求中只會擁有乙個例項。

這種配置模型在其他容器中等價於per-http-request, per-thread等。

builder.registertype().instanceperlifetimescope();
的asp.net和wcf整合中,每一次web請求或者方法呼叫,instanceperlifetimescope會被預設附加到component上

上下文作用域和per-lifetime作用域類似,但是對可見性提供更多顯示的控制。

在大多數程式中,同一層次的容器巢狀代表乙個工作單元,如果需要多層巢狀(例如global->request->transation),可以使用標籤確保component在多層結構中的某一層共享。

builder.registertype().instancepermatchinglifetimescope(mycontexthierarchy.usersession);
提供的標籤和生命週期作用域是對應的。

var usersessionlifetime = container.beginlifetimescope();

usersessionlifetime.tag = mycontexthierarchy.usersession;

Autofac 解析 生命週期作用域

註冊完成後,可以從建立的容器或生命週期中解析服務 用resolve方法實現 var builder newcontainerbuilder builder.registertype mycomponent as iservice var container builder.build using v...

vue例項生命週期

每個 vue 例項在被建立之前都要經過一系列的初始化過程。例如需要設定資料監聽 編譯模板 掛載例項到 dom 在資料變化時更新 dom 等。同時在這個過程中也會執行一些叫做生命週期鉤子的函式,給予使用者機會在一些特定的場景下新增他們自己的 beforecreate 在例項初始化之後,資料觀測和事件配...

Vue例項生命週期

vue例項在建立時有一系列的初始化步驟,例如建立資料觀察,編譯模板,建立資料繫結等。在此過程中,我們可以通過一些定義好的生命週期鉤子函式來執行業務邏輯。本文將詳細介紹vue例項的生命週期 下圖是vue例項生命週期的圖示 接下來,根據提供的生命週期鉤子,對vue例項各個階段的情況進行詳細說明 befo...