Spring.Net 初探之牛刀小試


又是一個周末,感受着外面30°的高溫,果斷宅在家里,閑來無事,就研究了一下spring .net 框架, 在這里不得不說 vs2013確實是一個強大的開發工具(起碼對於.net開發來說是這樣的),哈哈 廢話不多說了開始展示一下我的成果吧.

1、  項目采用多層架構 IRepository/Repository/Service/Web層,而spring.net主要安裝在service層,這樣做的目的就是使注入和web層分開,使代碼邏輯更加清晰,而在web層只需根據service層的類進行靜態調用即可。項目架構如圖所示:

在此之前需要在webconfig中配置spring.xml目錄,代碼如下所示:

1   <!--Spring.Net節點詳細配置-->
2   <spring>
3     <context>
4       <!--讀取嵌入在程序集中的配置文件-->
5       <!--<resource uri="file://~/Config/Spring.xml"/>-->
6       <!--讀取嵌入在程序集中的配置文件 將Spring.xml的屬性設置為【嵌入的資源】-->
7       <resource uri="assembly://Spring.Net.Service/Spring.Net.Service.Config/Spring.xml"/>
8     </context>
9   </spring>

下面就以BookInfo類為例貼出代碼

1、IBookInfo接口類定義代碼,定義函數

1 namespace Spring.Net.IRepository
2 {
3     public interface IBookInfo
4     {
5         string GetBook();
6     }
7 }
View Code

2、BookInfo實現類代碼

 1 namespace Spring.Net.Repository
 2 {
 3     public class BookInfo : IBookInfo
 4     {
 5         public string GetBook()
 6         {
 7             return "Hello World!";
 8         }
 9     }
10 }
View Code

3、BookService邏輯處理類代碼,在該類中用到了依賴注入技術,將BookInfo注入到Service中,需在Spring.xml中進行配置

 1 namespace Spring.Net.Service
 2 {
 3     public class BookInfoService
 4     {
 5         static IBookInfo Book { get; set; }
 6 
 7         public static string GetBook()
 8         {
 9             return Book.GetBook();
10         }
11     }
12 }
View Code

4、spring.xml配置代碼

 1 <objects xmlns="http://www.springframework.net">
 2   <!--放容器里面的所有的節點 type屬性的規范:程序集名稱在內的類型全名,程序集名-->
 3   <!--<object type="Spring.Net.Service.UserRegInfoService,Spring.Net.Service" singleton="true" >
 4     <property name="UserRegInfoRepository" ref="UserRegInfoRepository" />
 5   </object>-->
 6   <object type="Spring.Net.Service.BookInfoService,Spring.Net.Service" singleton="true" >
 7     <property name="Book" ref="Book" />
 8   </object>
 9   <!--<object type="Spring.Net.Service.LoginService,Spring.Net.Service" singleton="true" >
10     <property name="Login" ref="Login" />
11   </object>-->
12   <!--配置Service-->
13   <!--<object name="UserRegInfoRepository" type="Spring.Net.Repository.UserRegInfoRepository,Spring.Net.Repository" singleton="true" >
14   </object>-->
15   <object name="Book" type="Spring.Net.Repository.BookInfo,Spring.Net.Repository" singleton="true" >
16   </object>
17   <!--<object name="Login" type="Spring.Net.Repository.LoginRepository,Spring.Net.Repository" singleton="true" >
18   </object>-->
19 </objects>
View Code

5、web層調用

1         public ActionResult SpringTest()
2         {
3             //ViewBag.Msg = UserRegInfoService.GetAllData();
4             //ViewBag.Msg = LoginService.LoginInfo();
5             ViewBag.Msg = BookInfoService.GetBook();
6             return View();
7         }

6、效果圖如下所示:

在spring.xml中 有幾點需要注意:

1、當object屬性中的singleton為true時,標識已單例模式訪問service類,故函數要寫為靜態的,如BookService代碼所示,否則運行不正常。

2、object和property的name屬性值 必須和service類代碼里約定的一致,例如:在BookService里約定 對象為static IBookInfo Book { get; set; },那么在<property name="Book" ref="Book" />就必須保持一致,否則運行不正常。

3、spring.xml文件【生成操作屬性】要設置為嵌入的資源,否則,配置文件報錯。

以上就是本人對spring.net的淺析,如有需更正的地方,請各位多多指點,期待與熱愛技術的你共同進步。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM