1. 程式人生 > >Unity IOC容器通過配置實現型別對映的一種基本使用方法(個人比較喜歡)

Unity IOC容器通過配置實現型別對映的一種基本使用方法(個人比較喜歡)

什麼是Unity?

Unity是一個輕量級的可擴充套件的依賴注入容器支援建構函式,屬性和方法呼叫注入。Unity可以處理那些從事基於元件的軟體工程的開發人員所面對的問題。構建一個成功應用程式的關鍵是實現非常鬆散的耦合設計。鬆散耦合的應用程式更靈活,更易於維護。這樣的程式也更容易在開發期間進行測試。你可以模擬物件,具有較強的具體依賴關係的墊片(輕量級模擬實現),如資料庫連線,網路連線,ERP連線,和豐富的使用者介面元件。例如,處理客戶資訊的物件可能依賴於其他物件訪問的資料儲存,驗證資訊,並檢查該使用者是否被授權執行更新。依賴注入技術,可確保客戶類正確例項化和填充所有這些物件,尤其是在依賴可能是抽象的 。

1.外部配置檔案來實現自動對映,

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration" />
  </configSections>
  <unity>
    <!--定義服務  下面不可以寫註釋-->
    <alias alias="IChargesService" type="api.interfaclass.IChargesService, api" />
    <containers>
      <container>
        <!--定義服務實現   SH3H.BM.Service.BPay  下面不可以寫註釋-->
        <register type="IChargesService" mapTo="api.interfaclass.ChargesService, api" ></register>
      </container>
    </containers>
  </unity>
</configuration>

注意配置中的[]方括號表示的是泛型引數,unity->alias 中的type及types->type中的mapTo均需配置型別的完整限定名以及型別所在的程式集,中間以逗號分隔,比如:api.interfaclass.IChargesService 表示型別(這個類全稱包括名稱空間),而api(type逗號後面)表示這個泛型所在的程式集(dll)

configSections中section添加了一個名為Unity容器,< unity/>節點的註冊了IChargesService類,別名為IChargesService,type中填寫配置型別的完整限定名以及型別所在的程式集,< container/>節點下< register/>註冊一個新例項,這樣一來IChargesService例項屬性就被移除到程式外部了。實際應用中,通常有多種型別的IChargesService,應該將IChargesService象為介面。

相關推薦

Unity IOC容器通過配置實現型別對映基本使用方法個人比較喜歡

什麼是Unity? Unity是一個輕量級的可擴充套件的依賴注入容器,支援建構函式,屬性和方法呼叫注入。Unity可以處理那些從事基於元件的軟體工程的開發人員所面對的問題。構建一個成功應用程式的關鍵是實現非常鬆散的耦合設計。鬆散耦合的應用程式更靈活,更易於維護。

IoC容器通過註解進行注入的簡單實現

控制反轉和和依賴注入是Spring中的重要概念。控制反轉是將當前bean所依賴的其他bean元件的例項化過程交由IoC容器來實現並由IoC容器注入到當前bean當中。之前對其實現有一個簡單的認識,即根據類名通過反射的方式載入所需要的bean元件。現在對其做一個通

在Spring的IOC容器配置Bean

•在 xml 檔案中通過 bean 節點來配置 bean <bean id="helloWorld" class="com.spring.HelloWorld"> <property name="userName" value="Spring"></prope

spring IOC容器自自實現

流程 元件一、配置檔案載入器  public final class PropsUtil { /** * 獲取檔案流,轉成properti map記憶體 */ public static Properties loadProp

Spring4.IoC容器bean配置詳解

之前在有簡單的配置過bean,在bean的配置中有多種配置方式,下面一一介紹。 bean的配置方式      1.通過全類名(反射)      2.通過工廠方法(靜態工廠方法&例項工廠方法)      3.FactoyBean 通過全類名方式 配置Bean &

go語音之進階篇通過switch實現型別斷言

1、通過switch實現型別斷言 示例: package main import "fmt" type Student struct { name string id int } func main() { i := make([]interface{}, 3)

通過配置實現電腦和手機訪問分別顯示不同的頁面(以thinkphp5為例)

在thinkphp5入口檔案public/index.php下面加入以下程式碼即可:function is_mobile(){    // getallheaders();//如果是apache可以直接

學習筆記之aop基於IOC容器配置MSTzhang

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans"     xmlns:xsi="http://www.w3.org/2001/XMLSchema-

如何在Spring IoC容器配置資料來源?

DBCP配置: <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-

spring 通過註解實現工具類註入Service方法

註解在開發過程中,我們經常有碰到工具類裏面,要執行CRUD操作,需要調用到Service實現類,這時可以通過下述方法來得到。 1註入@Component 在持久層、業務層和控制層中,分別采用@Repository、@Service和@Controller對分層中的類進行凝視;而用@Component對那些

unity】編輯模式預覽Animator動作,2實現。 其中 playback模式是Cinema Director用的會使Unity Crash

一、環境 Unity 5.5.2 、Cinema Director v1.4.5.4  二、問題 美術用 Director 做CutScene動畫時, 某一個角色動作時間線上,播放多個動作, 預覽模式,拖動線的時候,Unity基本會100%Crash 如上圖拖到類似位

Geoserver通過ajax跨域訪問服務資料的方法含使用者名稱密碼認證的配置方式

Goeserver資料有兩種,一種需進行使用者密碼的許可權認證,一種無須使用者密碼。對於網上跨域訪問Geoserver資料的種種方法,對這2種資料並非通用。 筆者將Geoserver官方下載的Geoserver.war包部署到linux伺服器,通過前端 ajax 訪問geoserver資料失敗,其中包含跨域問

SQL server 通過SQL語句實現表數據的復制可跨庫

sel clas 中標 sql語句 同時 ssms sms 但是 off   今天遇到這樣的問題,要從一個數據庫中復制一張表的數據到另一個數據庫的同名表,以往我的做法就是將腳本文件導出來,然後執行一下,但是這次我試了一下,由於數據太多,導出的腳本有五百多兆,ssms根本運行

Primefaces中通過RemoteCommand實現JS觸發呼叫Java後臺方法

1. p:remoteCommand RemoteCommand provides a simple way to execute backing bean methods with javascript. 示例:     <p:remoteCommand name

通過xmpp實現離線訊息推送的方法及系統

[0039] 此外,本發明單獨設定的功能模組-1OS訊息模組,本質上既是XMPP伺服器的客戶端,又是APNS伺服器的訊息源,當訊息處理的瓶頸位於1S訊息模組時,如當前的1S訊息模組效能待改善或者同一時間內眾多離線訊息到達1S訊息模組時,則只需增加1S訊息模組伺服器的數量即可以解決此訊息處理瓶頸,因此本發明極易

IOC容器Bean的例項化方式以及其生命週期

1. 三種例項化Bean的方式 a.使用類構造器例項化(預設無引數) <bean id=“personService" class="com.baidu..PersonServiceImpl"/> b.使用靜態工廠方法例項化(簡單工廠模式) <

unity shader實現中槍散紅效果,參考別人演算法

Shader"Custom/RedBound2" {Properties {_MainTex ("Base (RGB)", 2D) = "white" {}_Pow ("Pow", Range(7.0,10.0)) = 8.0    }SubShader {Tags { "RenderType"="Opaqu

Ubuntu通過LDAP集成AD域賬號登錄libnss-ldap方式

libnss-ldapUbuntu通過LDAP集成AD域賬號登錄(libnss-ldap方式):# apt-get install libnss-ldap (中間直接回車,忽略)# vi /etc/nsswitch.confpasswd: files ldapgroup: files ldapshado

PPP的兩配置方法pap和chap

pap chapPAP的配置R1上的配置[R1]int s4/0/0[R1-Serial4/0/0]ppp authentication-mode pap[R1-Serial4/0/0]q[R1]aaa[R1-aaa]local-user huawei password cipher 123456Info:

【LeetCode-面試算法經典-Java實現】【059-Spiral Matrix II螺旋矩陣II

mod 最大 http 計算 spiral tro parent 全部 matrix 【059-Spiral Matrix II(螺旋矩陣II)】 【LeetCode-面試算法經典-Java實現】【全部題目文件夾索引】 原題   Given