spring.net

Spring.NET为建立企业级应用提供了一套轻量级的解决方案。通过Spring.NET,我们可以用统一且透明的方式来配置应用程序。Spring.NET的重点是为中间层提供声明式事务管理,以及一个功能齐全的ASP.NET扩展框架。Spring.NET是非侵入式的,代码对框架本身不会产生任何依赖。
外文名 spring.net 领    域 计算机 相    关 Spring NET 发布时间 2009年08月05日
目录
1 简介
2 版本发布
简介
Spring.Core 库是框架的基础, 提供依赖注入功能。Spring NET中大多数类库依赖或扩展了Spring.Core的功能。IObjectFactory接口提供了一个简单而优雅的工厂模式,移除了对单例和一些服务定位stub的必要。允许你将真正的程序逻辑与配置解耦。作为对IObjectFactory 的扩展,IApplicationContext接口也在Spring.Core库中,
Spring DOTNET 是一个关注于.NET企业应用开发的应用程序框架。它能够提供很多方面的功能,例如控制反转(Inversion of Control,英文缩写为IoC)、依赖注入(Dependency Injection,英文缩写DI)、面向方面编程(AOP)、数据访问抽象, 以及ASP DOTNET集成等。基于java的spring框架的核心概念和价值已被应用到.NET。Spring DOTNET 1.0 包含一个完全功能的依赖注入容器和AOP库。后续的发布将包含对ASP DOTNET、Remoting和数据访问的支持。[1] 
版本发布
2009年08月05日,Spring NET 1.3.0 RC1 发布,该版本包含了下面几个方面的新特性:
TIBCO EMS一体化- Helper类来提高你的生产力发展中消息传递应用程序与TIBCO EMS基础。
NVelocity集成- Helper类配置一个模板引擎在Sprint NVelocity基础应用程序
VS 的解决方案模板——VS .NET 2008年建立解决方案模板,让你快速建立并运行应用程序创建Spring的基础。
DI支持企业服务组件
其他值得注意的新特性:
NHibernate 2.1和ActiveMQ NMS 1.1支持。
更新和记录NHibernate 2.1快速入门应用程序。
spring NHibernate字节码服务提供方程序来支持基于DI的NH实体。[
2010年12月16日,Spring 1.3.1 发布,该版本包含以下主要特性:
名称空间解析器对WCF的集成
初始ASPNET MVC 2集成为核心的依赖注入功能
支持DI使用WCF的WebServiceHostFactory
本机。净4编译程序集
支持多个数据库之间的切换在运行时当使用NHibernate
支持NHibernate 3.0 GA版本
升级的石英。净支持1.0.3版本
apache nms的升级。ActiveMQ支持版本1.4.1
超过100个bug修复和其他改进。
========

Spring.NET学习笔记

——目录(原)

http://www.cnblogs.com/GoodHelper/archive/2009/11/20/SpringNet_Index.html

  目录

  前言

  Spring.NET学习笔记——前言 
 
  第一阶段:控制反转与依赖注入IoC&DI

  Spring.NET学习笔记1——控制反转(基础篇) Level 200
  Spring.NET学习笔记2——环境搭建(基础篇) Level 200
  Spring.NET学习笔记3——实现一个简易的IoC框架(练习篇) Level 100
  Spring.NET学习笔记4——对象的创建(基础篇) Level 200

  Spring.NET学习笔记5——容器中对象的作用域(基础篇) Level 200 
  Spring.NET学习笔记6——依赖注入(应用篇) Level 300
  Spring.NET学习笔记7——依赖对象的注入(基础篇) Level 200
  Spring.NET学习笔记8——集合类型的注入(基础篇) Level 200
  Spring.NET学习笔记9——打造简易的依赖注入框架(练习篇) Level 100
  Spring.NET学习笔记10——方法的注入(基础篇) Level 200
  Spring.NET学习笔记11——自定义对象行为(基础篇) Level 200
 
  SVN全部代码下载:
  http://springnetalldemo1.googlecode.com/svn/trunk/
 
  第二阶段:面向切面编程AOP

  Spring.NET学习笔记12——面向切面编程(基础篇) Level 300
  Spring.NET学习笔记13——AOP的概念(基础篇) Level 200
  Spring.NET学习笔记14——AOP的通知类型(基础篇) Level 300
  Spring.NET学习笔记15——AOP的配置(基础篇) Level 200
 
  SVN全部代码下载:
  http://springnetalldemo2.googlecode.com/svn/trunk/
  
  第三阶段:集成Nhibernate与ASP.NET MVC开发

  Spring.NET学习笔记16——事务管理(应用篇) Level 200
  Spring.NET学习笔记17——事务传播行为(基础篇) Level 200 
  Spring.NET学习笔记18——整合NHibernate(基础篇) Level 300
  Spring.NET学习笔记19——整合NHibernate和ASP.NET MVC(基础篇) Level 300

  SVN全部代码下载:
  http://springnetalldemo3.googlecode.com/svn/trunk/

  第四阶段:面向服务编程

  Spring.NET学习笔记20——整合Remoting(应用篇) Level 200
  Spring.NET学习笔记21——整合Web Service(应用篇) Level 200
  Spring.NET学习笔记22——整合WCF(应用篇) Level 200 
 
  第五阶段:扩展集成
 
  Spring.NET学习笔记23——整合ActiveMQ(应用篇) Level 200 (未完)
  Spring.NET学习笔记24——整合MSMQ(应用篇) Level 200 (未完)
  Spring.NET学习笔记25——整合Quartz.NET(应用篇) Level 200
  Spring.NET学习笔记26——整合NVelocity(应用篇) Level 200
 
  综合应用:企业架构体系实战

  Spring.NET企业架构实践之 JQuery + FlexiGrid + ASP.NET MVC + NVelocity + WCF + LINQ + NHibernate 综合应用 
  Spring.NET企业架构实践之 Nhibernate + ActiveMQ + ASP.NET MVC + NVelocity 对PetShop4.0重构 (未完) 
========

Spring.net使用说明

http://www.cnblogs.com/xdot/p/5988431.html

使用方法:
1.在配置文件设置Spring.net 节点

在配置节中,声明Spring.net,配置 context,objects 标签,来源(type)

<!--配置节:主要用来 配置 asp.net框架之外的 标签,告诉asp.net框架 这些标签由哪些类来处理!-->
<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><!--配置 Spring.net 容器 要读取的 配置文件 位置和方式--><context><!--<resource uri="assembly://SpringLover/SpringLover/Objects.xml"/> 配置程序集里的文件<resource uri="~/MyObjects.xml"/> 配置相对根目录的文件<resource uri="file://D:objects.xml"/> 配置绝对路径文件--><resource uri="config://spring/objects" /> <!--直接配置【配置文件的objects标签】 告诉spring.net容器,对象的配置节点就在 当前配置文件的spring/objects节点中--></context><!--配置 Spring.net 容器 要创建的对象-->
<!--<objects><!--id为对象ID,type前为【要使用的类名】,后为【程序集名称】,property为设置对象的值,如在这是设置对象名称为小白--><object id="usr" type="SevenOA.MODEL.Ou_UserInfo,SevenOA.MODEL">  <property name="uLoginName" value="小白~~~"></property></object>
<!--配置 业务仓储 和 数据仓储--><object id="bllSession" type="SevenOA.Service.BLLSession,SevenOA.Service"></object><object id="dbSession" type="SevenOA.Respository.DBSession,SevenOA.Respository"></object>
</objects>-->
</spring>

2. 读取文件

使用这种方式来读取Spring.net的数据: 
        IApplicationContext ctx = Spring.Context.Support.ContextRegistry.GetContext();
        //2.1.获取Spring容器(自动读取 Spring 配置文件)
        public static IApplicationContext GetSpringContains()
        {
            return ContextRegistry.GetContext();
        }
 
        //2.根据 键 获取 配置好的 对象!
        public static T GetObject<T>(string objId)
        {
            return (T)GetSpringContains().GetObject(objId);
        }
3.使用Spring.net 
    直接根据 键ID 获取 配置好的 对象!
========

第三章 Spring.Net 环境准备和搭建

http://www.cnblogs.com/cilence/archive/2013/02/22/2921987.html
  在前面一章我们介绍了依赖注入,控制反转的概念。接下来我们来真正动手搭建一下Spring.Net的环境,看一下Spring.Net 中的控制反转和依赖注入是什么样子。

3.1  Spring.Net 下载

  在Spring.Net的官方网站http://www.springframework.net/ 我们可以下载到关于Spring.Net所有资料,包括安装文件,文档以及代码。我们使用Spring.Net 框架经常要使用到的是一下文件:

Common.Logging.dll  包含了Spring.Net日志方面的功能(必须)

Spring.Core.dll       包含了Spring.Net 的核心库(必须)

Spring.Data.dll       包含了Spring.Net 的数据访问功能

Spring.Aop. dll       包含了Spring.Net 对面向切面编程(AOP)的支持

Spring.Web.dll       包含了Spring.Net 对ASP.NET进行了一系列功能扩展

3.2  Spring.Net 的配置介绍

  下载完Spring.Net相关文件后,我们要使用Spring.Net框架还需要进行一些简单的配置。

  Spring.Net 的配置文件(一般情况下加入到App.Config或者Web.Config中):

 <?xml version="1.0" encoding="utf-8" ?><configuration><configSections><sectionGroup name="spring"><!--提供Spring对应用程序上下文的支持--><section name="context" type="Spring.Context.Support.ContextHandler,Spring.Core"/><!--提供Spring对 对象容器的支持--><section name="objects" type="Spring.Context.Support.DefaultSectionHandler,Spring.Core"/></sectionGroup></configSections><spring><context><!--Spring中 IOC容器 所使用的对象XML文件定义--><resource uri="assembly://CnblogLesson_3_2/CnblogLesson_3_2.Config/Objects.xml"/></context></spring></configuration>

Spring.Net 对象的配置文件:

 <?xml version="1.0" encoding="utf-8" ?><objects xmlns="http://www.springframework.net"><object id="readerDal" type="CnblogLesson_3_2.ReaderDAL,CnblogLesson_3_2"></object></objects>

  在基于XML定义的对象中,<object>是一个节点,所有节点的父节点必须是<objects>,在<objects xmlns="http://www.springframework.net"> 的属性中xmlns是必须的。并且必须将XML设置为嵌入式资源,单击右键--》属性--》生成操作设置为嵌入的资源,否则Spring.Net 无法初始化Object。

3.3  开始搭建Spring.Net 的环境

  首先,我们仍然是先准备好Spring.Net 的相关文件,在这里我目前使用的是Spring.NET-1.3.2(由于文件有50多M,大家可以到各大网站去下载),然后打开Visual Studio,创建一个控制台项目。由于我现在使用的是.NetFramework 4.0, 所以我找到Spring.NET-1.3.2.zip\Spring.NET\bin\net\4.0\release下,将需要的文件引用到项目中。在这里,我为了方便就全部将常用的文件全部添加进项目了,并将这些文件添加引用。

  其次,我们需要添加Spring.Net 的配置文件以及Spring.Net 对象的配置文件(如:Config/Objects.xml),由于是控制台项目,这里就添加App.Config作为配置文件。3.2节已经给出Spring.Net 配置文件以及Spring.Net 对象的配置的写法。

  接下来,我们再添加代码文件。为了方便理解,举的例子依然是,第二章“获取博客园文章”的例子。除了ReaderService.cs的代码是使用Spring.Net 依赖注入方式来实现,其他的类都没有变化。

using System;
using Spring.Context;
using Spring.Context.Support;
using Spring.Core.IO;
using Spring.Objects.Factory.Xml;
using Spring.Objects.Factory;namespace CnblogLesson_3_3{/// <summary>/// 读取文章的业务逻辑类/// </summary>public class ReaderService : IReaderService{/// <summary>/// 读取文章的数据访问类对象/// </summary>private IReaderDAL dal;public ReaderService(){/*是通过XmlObjectFactory或者是IApplicationContext来配置可以二者选其一*///或者是通过XmlObjectFactory配置IResource input = new FileSystemResource("file:///C:/Objects.xml");IObjectFactory factory = new XmlObjectFactory(input);dal = (IReaderDAL)factory.GetObject("readerDal");//通过IApplicationContext来配置IApplicationContext context = ContextRegistry.GetContext();dal = (IReaderDAL)context.GetObject("readerDal");}/// <summary>/// 读者的名字/// </summary>private string Name { get; set; }/// <summary>/// 读取文章的方法/// </summary>public void GetArticle(){dal.GetArticle();}}}

  添加Config/Objects.xml文件

  对象之间通常会相互协作,我们也可以说他们相互具有依赖性,Spring.Net 提供了一个接口IObjectFactory。我们通过IObjectFactory接口是初始化.配置以及管理对象的容器(它是所有容器的父接口)。

其中有三个重要的专有名词以下会做详细的解释: 对象,对象工厂,应用程序上下文。

<?xml version="1.0" encoding="utf-8" ?>
 <objects xmlns="http://www.springframework.net" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
 
   <object id="readerDal" type="CnblogLesson_3_3.ReaderDAL,CnblogLesson_3_3">
     
   </object>
 
 </objects>

  Object 就是配置文件中所配置的对象,前面一直说的对象,就是上面配置的readerDal。

  IObjectFactory接口为Spring.Net 提供了一种高级的配置机制来管理和维护对象。

  IApplicationContext接口则扩展了IObjectFactory,增加了面向切面编程 的功能和消息资源处理等功能。

  Spring.Objects.Factory.IObjectFactory有多个实现类,最常用的就是

  Spring.Objects.Factory.Xml.XmlObjectFactory,通过XmlObjectFactory 我们可以通过配置xml文件来定义和装配以及发布服务对象。

  简单的说,IObjectFactory接口提供了配置框架和基本功能,IApplicationContext接口又在其基础上扩展了许多企业级特性。可以说IApplicationContext是IObjectFactory的一个超集,具备IObjectFactory所有的功能与行为。

  上面这些话可能都太概念性了,接下来我们看一下在CnblogLesson_3_3中的示例,我们使用Spring.Objects.Factory.Xml.XmlObjectFactory来管理对象:

1 //或者是通过XmlObjectFactory配置
2 IResource input = new FileSystemResource("file:///C:/Objects.xml");
3 IObjectFactory factory = new XmlObjectFactory(input);
4 dal = (IReaderDAL)factory.GetObject("readerDal");
  其中,关于IResource接口,非常重要,我们稍后会有专门的章节一起来和大家讨论,我们现在,只需要知道它是读取资源的接口就行了。

  所谓的,

  对象:就是示例中的 CnblogLesson_3_3.ReaderDAL 类的实例。

  对象工厂:IObjectFactory对象的示例,由于new XmlObjectFactory(input);得到的就是一个对象工厂实例。

1 //通过IApplicationContext来配置
2 IApplicationContext context = ContextRegistry.GetContext();
3 dal = (IReaderDAL)context.GetObject("readerDal");
  其中,应用程序上下文: ContextRegistry.GetContext();创建出来的就是应用程序上下文。
  

  通过前面的示例我们可以看到通过Spring.Net降低了业务逻辑层与数据访问层的耦合,但是实际上并没有完全解决耦合,只是把耦合放到了Object.XML 文件中。通过一个容器在程序运行的时候才形成依赖关系,即把接口的实现动态注入到类中。我通常把这种IOC的模式,看成一个升级版本的工厂模式,把Spring.Net的IOC容器看成一个大工厂,只不过这个工厂产生的对象都是在外部XML文件定义的。

========

参考资源

http://blog.csdn.net/xiaoguang44/article/details/7721993?locationNum=4

http://www.cnblogs.com/fly_dragon/archive/2010/09/06/1819547.html

http://stackoverflow.com/questions/7478180/spring-net-nhibernate-mvc3-your-opinions-please

http://www.gitshah.com/2011/08/integrating-springnet-with-mvc3.html

Spring.NET 学习总结相关推荐

  1. Spring MVC 学习笔记 对locale和theme的支持

    Spring MVC 学习笔记 对locale和theme的支持 Locale Spring MVC缺省使用AcceptHeaderLocaleResolver来根据request header中的 ...

  2. Spring MVC 学习总结(二)——控制器定义与@RequestMapping详解

    Spring MVC 学习总结(二)--控制器定义与@RequestMapping详解 目录 一.控制器定义 1.1.实现接口Controller定义控制器 1.2.使用注解@Controller定义 ...

  3. Spring Cloud 学习资料收集

    导读 关于Spring Cloud 去年开始逐渐多的出现在我的视线中,随着微服务这个词越来越热,我们或多或少的都听说过这个词,我们可以将Spring Cloud 看做是java 中Spring 为我们 ...

  4. Spring Cloud 学习笔记(四)-Spring Cloud Hystrix

    Spring Cloud 学习笔记(四)-Spring Cloud Hystrix 由于前一阵子项目的原因,今天才继续弄上,今天想学习一下Hystrix组件 这个组件还挺抽象的,最开始我一直没太明白, ...

  5. Spring Integration学习资料

    Spring Integration学习资料 1.1     背景 Spring框架的一个重要主题是控制反转.从广义上来说,Spring处理其上下文中管理的组件的职责.只要组件减轻了职责,它们同时也被 ...

  6. Spring MVC 学习总结(九)——Spring MVC实现RESTful与JSON(Spring MVC为前端提供服务)...

    Spring MVC 学习总结(九)--Spring MVC实现RESTful与JSON(Spring MVC为前端提供服务) 目录 一.JSON 1.1.概要 1.2.使用ModelAndView ...

  7. Spring Boot学习笔记-实践建言

    2019独角兽企业重金招聘Python工程师标准>>> 本文延续<Spring Boot学习笔记-快速示例>,从开发指南中摘出一些实践经验可供参考.这也是笔者看到的眼前一 ...

  8. 八个开源的 Spring Boot 学习资源,你值得拥有

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:什么?你还在使用fastjson,性能太差了个人原创+1博客:点击前往,查看更多 转载自:牧马小子 Spring ...

  9. spring security 学习三-rememberMe

    spring security 学习三-rememberMe 功能:登录时的"记住我"功能 原理: rememberMeAuthenticationFilter在security过 ...

最新文章

  1. 介绍Smart Client组件网站
  2. 皮一皮:没有草原也敢买马?
  3. io类游戏快速开发 2
  4. 浅谈面向对象的javascript几个特性
  5. 阿里 mysql cluster_MySQL Cluster集群安装及使用-阿里云开发者社区
  6. 和最大子序列(dp)
  7. Linux驱动下的platform总线架构(转)
  8. android语音识别 android.speech 包分析
  9. vs 2010调用matlab dll显示窗口核心代码
  10. 你的不自律,正在慢慢毁掉你
  11. 微信撤回的消息能恢复吗?微信撤回的消息怎么恢复
  12. bzoj 4008 亚瑟王 - 动态规划 - 概率与期望
  13. Origin画图笔记
  14. Dcloud课程2 什么是Dcloud
  15. Codeforces Round #401 (Div. 2) D. Cloud of Hashtags(字符串 + 逆向思维)
  16. Paper:《YOLOv4: Optimal Speed and Accuracy of Object Detection》的翻译与解读
  17. [转]医保 北京医保存折如何取钱
  18. Matlab电力系统雷击过电压,雷电波折、反射对日常生活的影响研究
  19. 项目一:医疗费用预估
  20. nginx反向代理配置+lnmp优化+七层负载upstream+keepalived

热门文章

  1. springboot 启动分析【难点】——如何自动扫描 @SpringBootApplication||如何加载自动配置类 @EnableAutoConfiguration||如何加载前端控制器
  2. 帆软报表加载(开始)完毕执行自定义JavaScript
  3. 理解CSS3 transform中的Matrix(矩阵)
  4. Jenkins 最新版qq邮箱配置实例演示,5步设置保证邮件接收成功!
  5. leetcode C++ 46. 全排列 给定一个 没有重复 数字的序列,返回其所有可能的全排列。
  6. 人眼中亮斑的检测、定位和去除(2)
  7. LVQ模型Python实现
  8. 从Vuex的Actions中理解JavaScript的解构赋值
  9. IDEA配置Tomcat出现404,The requested resource is not available终极超详细解决方案
  10. mysql 修改时间段内_详解mysql数据库MyISAM存储引擎如何转为Innodb及其中的注意点...