網站首頁 編程語言 正文
一、Spring.Net簡介
Spring.NET為建立企業級應用提供了一套輕量級的解決方案。
通過Spring.NET,我們可以用統一且透明的方式來配置應用程序。Spring.NET的重點是為中間層提供聲明式事務管理,以及一個功能齊全的ASP.NET擴展框架。Spring.NET是非侵入式的,代碼對框架本身不會產生任何依賴。
Spring.Core庫是框架的基礎,提供依賴注入功能。Spring.NET中大多數類庫依賴或擴展了Spring.Core的功能。IObjectFactory接口提供了一個簡單而優雅的工廠模式,移除了對單例和一些服務定位stub的必要。允許你將真正的程序邏輯與配置解耦。作為對IObjectFactory的擴展,IApplicationContext接口也在Spring.Core中,Spring DOTNET是一個關注于.NET企業應用開發的應用程序框架。它能夠提供很多方面的功能,例如控制反轉(Inversion of Control,英文縮寫為IOC)、依賴注入(Dependency Injection,英文縮寫為DI)、面向方面編程(AOP)、數據訪問抽象,以及ASP.NET集成等。基于Java的spring框架的核心概念和價值已被應用到.NET。Spring.NET 1.0包含一個完全功能的依賴注入容器和AOP庫。后續的發布將包含對Spring.NET、Remoting和數據訪問的支持。
二、依賴注入
依賴注入即控制反轉
控制反轉(Inversion of Control,英文縮寫為IOC)是一個重要的面向對象編程的法則來削減計算機程序的耦合問題,也是輕量級的Spring框架的核心。控制反轉一般分為兩種類型:依賴注入(Dependency Injection,簡稱DI)和依賴查找。依賴注入應用比較廣泛。
其本質就是反射工廠。
在運行期間,由外部容器動態地將依賴對象注入到容器中。
Interface Driven Design接口驅動,接口驅動有很多好處,可以提供不同靈活的子類實現,增加代碼穩定和健壯性等等,但是接口一定是需要實現的,也就是如下語句遲早要執行:AInterface a = new AInterfaceImp(); 這樣一來,耦合關系就產生了,如:
class A { AInterface a; public A() { } //方法 public void Method() { //實例化對象 a = new AInterfaceImp(); } }
在上面的代碼中,Class A與AInterfaceImp就是依賴關系,如果想使用AInterface的另外一個實現類就需要更改代碼了。當然,我們可以建立一個Factory來根據條件生成想要的AInterface的具體實現,代碼如下:
public class InterfaceImpFactory { public AInterface Create(Object obj) { if (obj.Equals(condA)) { return new AInterfaceImpA(); } if (obj.Equals(condB)) { return new AInterfaceImpB(); } else { return new AInterfaceImp(); } } }
上面的代碼中,表面上看來在一定程度上緩解了以上問題,但實質上這種代碼耦合并沒有改變。通過IoC模式可以徹底解決這種耦合,它把耦合從代碼中移出去,放到統一的XML 文件中,通過一個容器在需要的時候把這個依賴關系形成,即把需要的接口實現注入到需要它的類中,這可能就是“依賴注入”說法的來源了。
三、DLL文件
Spring.Core.dll:包含Spring.NET框架基本的核心工具類,Spring.NET其他組件都要使用這里的類,是其他組件的基本核心。
Spring.NET其他組件都要使用到這里的類,是其他組件的基本核心。
Spring.Aop.dll:Spring.NET的AOP框架。
Spring.Web.dll:提供了對Web的支持。
Spring.Web.Mvc3.dll:Spring.NET自己的Web框架。
Common.Logging.dll:Spring.Net日志功能。
原文鏈接:https://www.cnblogs.com/dotnet261010/p/7372471.html
相關推薦
- 2022-02-24 解決:this is incompatible with sql_mode=only_full_gr
- 2022-09-25 uniapp封裝request請求的方法
- 2022-06-25 python+opencv實現堆疊圖片_python
- 2022-07-29 如何通過redis減庫存的秒殺場景實現_Redis
- 2022-12-11 redis實現sentinel哨兵架構的方法_Redis
- 2022-07-17 使用SQL語句實現查詢排序,順序和倒序_MsSql
- 2022-04-02 Python面向對象的程序設計詳情_python
- 2022-03-20 Android國際化之中英文語言切換_Android
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支