亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring.Net AOP實例

發布時間:2020-07-06 15:40:03 來源:網絡 閱讀:962 作者:guwei4037 欄目:編程語言

Spring.Net和Log4net、NUnit、NHibernate一樣,也是先從Java中流行開來,然后移植到了.NET當中,形成了.NET版的Spring框架。其官方網站為:http://www.springframework.net/index.html。

首先看一下Spring.Net的架構圖:

Spring.Net AOP實例

根據架構圖可以看到,它的底層核心是Spring Core,上層是AOP層。其它的什么NHibernate、ES、WCF都基于這兩個底層。

看了這個架構圖只是了解了Spring框架所提供的功能,那么Spring.Net究竟是什么呢?它對我們開發來說究竟有什么樣的幫助呢?

簡單來說,Spring.Net是一個關注.NET企業應用開發的應用程序框架。它的核心思想是AOP(面向切面編程或者叫面向方面編程),與面向對象不同,它關注的是程序的“切面”,即橫向的內容(比如日志、驗證等通用型的功能)。隨著軟件系統規模的不斷升級,復雜程度越來越高,面向對象就有了它的弊端,這時候引入AOP就能有效的解決問題。從系統中分離出來方面,然后集中實現。從而可以獨立編寫業務邏輯代碼和方面代碼,在系統運行的時候,再將方面代碼“織入”到系統中,使得系統的功能得以擴展。

提到Spring.Net除了想到AOP之外,還有一個就是IOC(控制反轉)或者DI(依賴注入)。主要意思就是明確的定義組件接口,獨立的開發各個組件,然后通過組件之間的依賴關系進行組裝,進而成為一個完整的系統。

好了,我從來不喜歡講太多的理論,我喜歡用一些小例子讓大家快速的上手這個技術。由于Spring.Net是個相對比較龐大的內容,因此下面就介紹一下具體使用Spring.Net實現AOP的過程。

首先先下載Spring.Net。這個可以在官方鏈接中找到或者百度下一個。目前最新的版本號為1.3.2,建議讀者下載最新版本。

如果你下的是zip包,可以直接解壓縮。如果是msi安裝包,則你可以選擇路徑進行安裝。里面有Spring.Net的核心dll文件、doc文檔和一些例子。由于Spring.Net是開源的,因此你還會看到有項目的源代碼在里面,對底層源碼感興趣的讀者也可以拿出來學習使用。

一、建立一個類庫項目BIZ

BIZ是一個業務邏輯處理模塊,首先定義一個業務接口以及其實現類:

namespace BIZ.Commands
{
    public interface IStudentService
    {
        void GoToSchool(string studentName, string className);
    }
}
namespace BIZ.Commands
{
    public class StudentService : IStudentService
    {
        public void GoToSchool(string studentName, string className)
        {
            Console.WriteLine("計算機({1})班的{0}同學去上學了。。。", studentName, className);
        }
    }
}

這里我模擬一下任務,就是一個學生去上學的業務邏輯處理。

接下來,在這個項目中建立一個LogBeforeAdvice類并實現IMethodBeforeAdvice接口。這里面需要添加引用Spring.Net的一些dll文件,比如Spring.Core、Spring.Aop等,這些都可以在Spring.Net目錄中找到。

namespace BIZ.Aspects
{
    public class LogBeforeAdvice : IMethodBeforeAdvice
    {
        public void Before(System.Reflection.MethodInfo method, object[] args, object target)
        {
            Console.WriteLine("攔截的方法名—>" + method.Name);
            Console.WriteLine("目標—>" + target);
            Console.WriteLine("參數—>");
            if (args != null)
            {
                foreach (object arg in args)
                {
                    Console.WriteLine("\t: " + arg);
                }
            }
        }
    }
}

這里需要說明一下,這里實現的接口叫“前置通知”,除此之外還有“后置通知”、“環繞通知”、“異常通知”等共四種類型的通知。

前置通知是在方法執行前自動執行的通知;后置通知是在方法執行后自動執行的通知;環繞通知可以在方法調用前執行通知代碼,可以決定是否還調用目標方法;異常通知是方法拋出異常時自動執行的方面代碼。(注:其它三種通知可以自行添加實現,這里只演示前置通知。)

二、建立一個控制臺應用程序SpringNetAop

在App.config(新版本的VS都能夠自動生成這個文件,如果沒有自動新建一個)中,添加Spring.Net的相關配置:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <sectionGroup name="spring">
      <section name="context" type="Spring.Context.Support.ContextHandler, Spring.Core" />
      <section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core" />
    </sectionGroup>
  </configSections>
               
  <spring>
    <context>
      <resource uri="config://spring/objects"/>
    </context>
               
    <objects xmlns="http://www.springframework.net">
      <description>AOP例子</description>
      <object id="beforeAdvice" type="BIZ.Aspects.LogBeforeAdvice,BIZ"/>
      <object id="myStudentService" type="Spring.Aop.Framework.ProxyFactoryObject">
        <property name="Target">
          <object type="BIZ.Commands.StudentService, BIZ" />
        </property>
        <property name="InterceptorNames">
          <list>
            <value>beforeAdvice</value>
          </list>
        </property>
      </object>
    </objects>
               
  </spring>
</configuration>

這里面就是核心的配置內容。通過config文件裝配需要注入的對象并織入到StudentService這個業務邏輯類中,這樣就完成了組裝。

然后在Program.cs中寫入如下代碼:

namespace SpringNetAop
{
    class Program
    {
        static void Main(string[] args)
        {
            IApplicationContext context = ContextRegistry.GetContext();
            IStudentService command = (IStudentService)context["myStudentService"];
            command.GoToSchool("guwei4037", "一");
        }
    }
}

同樣的也需要引用Spring.Core和Spring.Aop的dll文件。

好,運行一下控制臺程序。

Spring.Net AOP實例

可以看到,在我調用上學的方法時,先執行了方面代碼里的內容。

通過這個例子,我們認識到Spring.Net可以根據需要動態的裝配組件,并可以在執行某個方面代碼前自動執行我們所要的操作。可以想象,這個功能完全可以使用在我們對業務操作進行日志記錄的場合,在調用方法時還是去上學,但是通過前置通知我們增加了日志記錄功能。

好了,關于Spring.Net的AOP部分就講解到這里,這里只是簡單講解了一小部分的Spring.Net的內容,主要目的是讓大家對Spring.Net有個基本的認識。如果需要更多詳細的資料,可以查看相關文檔資料:http://www.springframework.net/documentation.html。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

佛教| 平南县| 淄博市| 沧州市| 遵义市| 措勤县| 长顺县| 四会市| 新蔡县| 沈阳市| 西安市| 将乐县| 黄大仙区| 弥渡县| 调兵山市| 乐都县| 邯郸县| 榆中县| 白朗县| 贵溪市| 喀什市| 元江| 平陆县| 辰溪县| 增城市| 天柱县| 沾益县| 瓮安县| 信宜市| 福建省| 兴和县| 凌源市| 黄大仙区| 洛南县| 万宁市| 辽源市| 改则县| 宁化县| 宾川县| 茌平县| 贵州省|