Spring.Net快速入門:控制翻轉、依賴注入、面向切面編程 微軟企業庫Unity學習筆記(一)

Spring.Net主要功能:html


1.IoC:控制翻轉(Inversion of Control)  理解成抽象工廠
翻轉控制:就是建立對象的權利由開發人員本身控制New,轉到了由容器來控制。

2.DI:依賴注入(Dependency Injection)
依賴注入:就是在經過容器開建立對象的時候,在對象的初始化是能夠給一些屬性、構造方法的參數等注入默認值(能夠是複雜的類型).

3.AOP:面向切面編程  (相似:管道、MVC過濾器等)web

 

1、IoC示例Demo:spring

1.新建WinForm項目數據庫

 

2.在解決方案下新建文件夾Lib,用來存放Spring.Net用到的dll和文件編程

Spring.Core.dll、Common.Logging.dll(Spring.Core.dll內部使用到的)、Spring.Core.pdb、Spring.Core.xml  app

 

3.首先添加Spring.Net核心dll:Spring.Core.dll 和 Common.Logging.dll引用框架

 

4.配置app.config文件:post

 

5.代碼調用:學習

using Spring.Context; using Spring.Context.Support; using System; using System.Windows.Forms; namespace CZBK.HeiMaOA.SpringNetDemo { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { IApplicationContext context = ContextRegistry.GetContext();//建立容器 IUserInfoService userInfoService = (IUserInfoService)context.GetObject("UserInfoService"); MessageBox.Show(userInfoService.ShowMsg()); } } }

UserInfoService類:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace CZBK.HeiMaOA.SpringNetDemo { public class UserInfoService : IUserInfoService { public string ShowMsg() { return "Hello World"; } } }
IUserInfoService接口:
namespace CZBK.HeiMaOA.SpringNetDemo { public interface IUserInfoService { string ShowMsg(); } }

6.效果:url

 

7.Demo源碼下載:點擊下載>>

 

2、DI:依賴注入示例Demo:

 

1.添加一個複雜類型:

namespace CZBK.HeiMaOA.SpringNetDemo { public class Person { public int Age { get; set; } } }

 

2.修改下以前代碼:

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace CZBK.HeiMaOA.SpringNetDemo { public class UserInfoService : IUserInfoService { public string Name { get; set; } public Person Person { get; set; } public string ShowMsg() { return "Hello World:" + Name + " 年齡是:" + Person.Age; } } }

 

3.修改App.config配置:

<?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"> <object name="UserInfoService" type="CZBK.HeiMaOA.SpringNetDemo.UserInfoService, CZBK.HeiMaOA.SpringNetDemo"> <property name="Name" value="張三"/>  <property name="Person" ref="Person"/> </object>  <object name="Person" type="CZBK.HeiMaOA.SpringNetDemo.Person, CZBK.HeiMaOA.SpringNetDemo"> <property name="Age" value="20"/> </object> </objects> </spring> </configuration>

 

4.運行效果:

 

5.源碼下載:點擊下載>>

 

3、改進:

將app.config中的objects節點配置放到一個單獨的xml文件中存放

 

1.將objects節點剪切到objects.xml文件中:

<?xml version="1.0" encoding="utf-8" ?> <objects xmlns="http://www.springframework.net"> <object name="UserInfoService" type="CZBK.HeiMaOA.SpringNetDemo.UserInfoService, CZBK.HeiMaOA.SpringNetDemo"> <property name="Name" value="張三"/> <property name="Person" ref="Person"/> </object> <object name="Person" type="CZBK.HeiMaOA.SpringNetDemo.Person, CZBK.HeiMaOA.SpringNetDemo"> <property name="Age" value="20"/> </object> </objects>

2.修改app.confgi文件:

<?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"/>  <resource uri="file://objects.xml"/> <!--指定xml文件位置(這裏程序會到bin\debug或release目錄下找這個文件,須要修改下xml文件屬性,改成始終複製到輸出目錄)--> </context>

    <objects xmlns="http://www.springframework.net"> <!--這個節點須要保留-->
    </objects>
</spring> </configuration>

3.修改objects.xml文件屬性:

 

4.運行效果:

 

5.源碼下載:點擊下載>>

 

4、在MVC4中使用Spring.Net

1.Web工程添加dll引用: 點擊下載須要的dll文件>>

2.在Web工程下新建Config文件夾和控制器xml文件:

 

3.控制器代碼:

namespace WebApp.Controllers { public class UserInfoController : Controller { // // GET: /UserInfo/ //IUserInfoService userInfoService = new UserInfoService(); //修改爲下面的: CZBK.HeiMaOA.IBLL.IUserInfoService userInfoService { get; set; } //這樣就完成了Web層與BLL層的解耦 public ActionResult Index() { return View(); } }

 

4.controllers.xml文件配置內容:

<?xml version="1.0" encoding="utf-8" ?> <objects xmlns="http://www.springframework.net"> <object type="WebApp.Controllers.UserInfoController,WebApp" singleton="false" > <!--指定命名空間、程序集、是否單例--> <property name="userInfoService" ref="userInfoService" /> <!--配置UserInfoController中用到的複雜類型userInfoService--> </object>

  <object type="CZBK.HeiMaOA.BLL.UserInfoService,CZBK.HeiMaOA.BLL" singleton="false" >
  </object> </objects>

 

5.修改Web工程中的web.config文件,添加以下節點:

 <configSections>
    <!--Spring.Net配置-->
    <sectionGroup name="spring"> <section name="context" type="Spring.Context.Support.MvcContextHandler, Spring.Web.Mvc4"/> <!--指定爲MVC4--> </sectionGroup> </configSections> <!--Spring.Net配置--> <spring> <context> <resource uri="file://~/Config/controllers.xml"/> <!--指定控制器xml文件--> </context> </spring> <!--Spring.Net配置結束-->

 

6.源碼下載:

點擊下載源碼>>

點擊下載數據庫文件>>

 

5、小結:

Spring.Net實質上底層就是用反射去讀取配置文件,之後須要變更就不須要修改代碼,直接修改配置文件就能夠了,方便靈活。

 

6、Spring.Net中文幫助文檔(聯網版):

點擊下載>>

 

7、擴推薦:

相似的框架還有微軟的Unity,也很不錯。推薦博文:

微軟企業庫Unity學習筆記(一)

相關文章
相關標籤/搜索