一、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日志功能。

最新文章

  1. 阿里云Centos配置iptables防火墙
  2. Diagramming for WinForms 教程一(读取图元数据)
  3. J2SE 1.6 特性:java.lang.instrument
  4. js中如何操作json数据
  5. Game: Map Design Considerations 游戏地图设计指南
  6. 【C#学习笔记】读文件
  7. HDU1890 Robotic Sort Splay tree反转,删除
  8. Mysql数据库导入命令Source详解
  9. Android ArrayAdapter MultiAutoCompleteTextView
  10. POJ1743 Musical Theme [后缀自动机]
  11. Java 单例(Singleton)模式
  12. 简单的实现HTTP密码验证登陆
  13. django MTV架构下的网站开发步骤
  14. Java并发机制和底层实现原理
  15. iOS项目开发实战——学会使用TableView列表控件(四)plist读取与Section显示
  16. windows能连网络,可是打不开网页,出现无法解析server的DNS
  17. Redis 操作有序集合数据
  18. Delphi : keydown与keypress的区别,组合键
  19. JAVA ACM 基础
  20. jenkins修改时区

热门文章

  1. 解密SVM系列(四):SVM非线性分类原理实验
  2. Python - 带参数的方法
  3. jquery 获取css position的值
  4. xml xpath dta笔记
  5. 基于olami开放语义平台的微信小程序遥知之源码实现
  6. java之final
  7. Linux命令-文件处理命令:cat
  8. http协议中各个响应状态200_301_404_500等返回值含义快速一览
  9. No persister for nhibernate 解决下面的问题
  10. ztree获取选中节点