首页 Spring.NET&NHibernate从入门到精通

Spring.NET&NHibernate从入门到精通

举报
开通vip

Spring.NET&NHibernate从入门到精通 实战 C#.NET 编程----Spring.NET & NHibernate 从入门到精通 版权声明:未经作者本人许可,任何公司、团体、个人都不得以任何方式复制或抄袭本文 内容的部分或全部。 转载本文请通过以下方式联系作者获得许可。 MSN:william716@hotmail.com QQ: 6450607 邮件:it1630@163.com 您可以从以下网址下载最新版:http://tech.bokeecn.com 本文中的源代码下载地址:...

Spring.NET&NHibernate从入门到精通
实战 C#.NET 编程----Spring.NET & NHibernate 从入门到精通 版权声明:未经作者本人许可,任何公司、团体、个人都不得以任何方式复制或抄袭本文 内容的部分或全部。 转载本文请通过以下方式联系作者获得许可。 MSN:william716@hotmail.com QQ: 6450607 邮件:it1630@163.com 您可以从以下网址下载最新版:http://tech.bokeecn.com 本文中的源代码下载地址:http://tech.bokeecn.com 作 者:李绿华 (William Lee) 制作时间:2006-11-30 版 本 号:V 0.50 1 目 录 实战C#.NET编程----Spring.NET & NHibernate从入门到精通---------------------------------------- 1 第一章 Visual C# .NET 入门指南 ----------------------------------------------------------------------- 3 一、 C# 简介 ---------------------------------------------------------------------------------------- 3 二、 使用Visual Studio 开始C# 项目------------------------------------------------------- 3 步骤 1. 开始项目 -------------------------------------------------------------------------------- 4 步骤 2. Hello, World! ------------------------------------------------------------------------- 5 步骤 3. 程序结构 -------------------------------------------------------------------------------- 7 步骤 4. 控制台输入 ----------------------------------------------------------------------------- 8 步骤 5. 使用数组 -------------------------------------------------------------------------------- 9 步骤 6. 文件输入/输出 ------------------------------------------------------------------------10 步骤 7. 创建函数 -------------------------------------------------------------------------------13 步骤 8. 使用调试器 ----------------------------------------------------------------------------15 小结--------------------------------------------------------------------------------------------------17 第二章 面向对像ORM ----------------------------------------------------------------------------------------18 一、 什么是ORM ------------------------------------------------------------------------------------18 二、 为什么需要ORM ------------------------------------------------------------------------------19 三、 流行的ORM框架简介 ------------------------------------------------------------------------19 第三章 Spring.NET入门 ------------------------------------------------------------------------------------20 一、 Spring.NET概览 ----------------------------------------------------------------------------20 二、 第一个Spring.NET的程序 ----------------------------------------------------------------22 第四章 NHibernate入门 ------------------------------------------------------------------------------------25 一、 什么是Nhibernate -------------------------------------------------------------------------25 二、 Nhibernate概述 ----------------------------------------------------------------------------25 三、 第一个NHibernate 程序 ------------------------------------------------------------------28 第五章 Spring.NET 与 NHibernate 的整合 ----------------------------------------------------------34 一、 建立新的项目(SpringNHibernateSample) -------------------------------------------35 二、 添加NHibernate程序 ----------------------------------------------------------------------35 三、 添加Spring.NET的程序 -------------------------------------------------------------------35 四、 添加Spring.NET为NHibernate的容器配置 -------------------------------------------38 五、 编写测试程序代码 -------------------------------------------------------------------------41 六、 测试并查看结果 ----------------------------------------------------------------------------43 第六章 深入Spring.NET 与 NHibernate开发---------------------------------------------------------43 第七章 项目实战----图书出租管理系统---------------------------------------------------------------43 第八章 结束语 ------------------------------------------------------------------------------------------------43 2 第一章 Visual C# .NET 入门指南 一、 C# 简介 Visual C# .NET 是 Visual Studio 系列中的最新成员。这种新语言基于 C/C++,但它深化了更容易地使用面向组件编程的发展方向。C/C++ 程序员应该 非常熟悉它的语法。 下面的示例应用程序示范了如何构建一个简单的实现 QuickSort 算法的 C# 项目。它包括了 C# 程序的基本组成部分:读/写控制台和文件、创建函数和 使用基本数组。 这些入门指南并不打算涵盖该编程语言的所有方面。它们只是您探索这种语 言的一个起点。我们鼓励您按照本教程的说明执行,因为它包括了 QuickSort 应 用程序的各个不同部分。您还可以获得完整的源代码和项目文件。 建议的要求 编译此示例应用程序需要 Visual Studio.NET 2003/2005。关于 C/C++ 的 知识是有帮助的但不是必需的。 二、 使用 Visual Studio 开始 C# 项目 Visual C# .NET 入门指南通过实现一个简单的 QuickSort 算法,带您领略 如何构建 Visual C# .NET 项目。 本节将按以下的步骤让大家一步一步了解 Visual C#: „ 步骤 1. 开始项目 „ 步骤 2. Hello, World! „ 步骤 3. 程序结构 „ 步骤 4. 控制台输入 „ 步骤 5. 使用数组 3 „ 步骤 6. 文件输入/输出 „ 步骤 7. 创建函数 „ 步骤 8. 使用调试器 „ 小结 你可以下载 Quicksort_Visual_CSharp_.NET.exe 。里面包含了下面的代码。 步骤 1. 开始项目 Visual Studio 中的开发工作以解决 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 的形式进行组织,每个解决方案包 含一个或多个项目。在本教程中,我们创建的解决方案包含一个 C# 项目。 „ 创建一个新项目 在 Visual Studio .NET 环境中,从菜单中选择 File | New | Project。 在左侧选择 Visual C#Projects,然后在右侧选择 Console Application。 指定项目的名称,然后输入创建项目的位置。Visual Studio 会自动创建项 目目录。 单击 OK,那么现在就正式开始了 „ Visual C# 解决方案 4 Visual Studio.NET 已经创建了含有一个简单 Visual C# 项目的解决方案。 该项目包含两个文件:assemblyinfo.cs 和 class1.cs。 接下来的几步骤将讨论这些不同的文件以及如何编译该项目。 步骤 2. Hello, World! 很遗憾,但我们仍然无法抵御这种诱惑……我们还是不得不完成一个基于 C# 的经典"Hello, World!"应用程序,这个应用程序最初是用 C 语言编写的。 „ 修改源代码 在 Solution Explorer 中双击文件"class1.cs"。可以通过"View"菜单来显示 Solution Explorer。 更改预生成的 模板 个人简介word模板免费下载关于员工迟到处罚通告模板康奈尔office模板下载康奈尔 笔记本 模板 下载软件方案模板免费下载 (class1.cs),如下面以斜体突出显示的 代码所示。 using System; namespace quicksort { /// /// Summary description for Class1. /// class Class1 { static void Main(string[] args) { // // TODO: Add code to start application here // Console.WriteLine ("Hello, C#.NET World!"); } } } 注意,当您键入代码时,Visual Studio 将为您提示类和函数的名称(因 为 .NET 框架发布了这种类型信息)。 5 „ 编译应用程序 既然您已经完成了修改,就可以通过在 Build 菜单中简单地选择 Build 来 编译 Visual C# 项目。 来自 C# 编译器的错误和消息会在 Output 窗口中显示。如果没有错误,则 可以通过单击 Debug 菜单下的 Start without Debugging 来运行 Hello World 应用程序。 „ 程序输出 在 Visual C# 中运行 Hello World 示例应用程序时,输出结果的屏幕截图 如下: „ 理解更改 System.Console 类的 WriteLine() 函数打印传递给它的字符串,其后紧跟 6 一行新的字符。此函数可以接受许多其他数据类型(包括整型和浮点型)的参数。 在程序加载完成后,控制就传递给 Main() 函数。这就是我们在该过程中插 入对 WriteLine() 调用的原因。 步骤 3. 程序结构 既然我们已经构建了一个简单的 Hello World 应用程序,那么就让我们停 下来分析一下 Visual C# 应用程序的基本组成部分。 „ 源代码注释 字符 “//” 将行的剩余部分标记为一个注释,这样 C# 编译器就会忽略它。 另外,/* 和 */ 之间的代码也会被当作注释。 // This line is ignored by the compiler. /* This block of text is also ignored by the Visual C# compiler. */ „ Using 指令 .NET 框架为开发人员提供了许多有用的类。例如,Console 类处理对控制 台窗口的输入和输出。这些类是按照层次树的形式组织的。Console 类的完全限 定名实际上是 System.Console。其他的类包括 System.IO.FileStream 和 System.Collections.Queue。 using 指令允许您在不使用完全限定名的情况下引用命名空间中的类。以斜 体突出显示的 代码应用了 using 指令。 using System; class Class1 { static void Main(string[] args) { System.Console.WriteLine ("Hello, C#.NET World!"); Console.WriteLine ("Hello, C#.NET World!"); } } „ 类声明 7 与 C++ 或 Visual Basic 不同,Visual C# 中的所有函数都必须封装在一 个类中。class 语句声明一个新的 C# 类。就 Hello World 应用程序来说, Class1 类包含一个函数,即 Main() 函数。如果用一个 namespace 块将类的定 义括起来,就可以把类组织为诸如 MsdnAA.QuickSortApp 这样的层次。 在本入门指南中,我们并不打算深入地介绍类,但是我们将为您简要概述为 什么类是我们的示例应用程序的一部分。 „ Main() 函数 在应用程序加载到内存之后,Main() 函数就会接收控制,因此,应该将应 用程序启动代码放在此函数中。传递给程序的命令行参数存储在 args 字符串数 组中。 步骤 4. 控制台输入 现在,我们将继续编写 QuickSort 应用程序。我们需要做的第一件事就是 提示用户提供输入和输出文件。 „ 修改源代码 更改 C# 源文件 (class1.cs),如下面以斜体突出显示的代码所示。其他的 差异(如类名)可忽略不计。 // Import namespaces using System; // Declare namespace namespace MsdnAA { // Declare application class class QuickSortApp { // Application initialization static void Main (string[] szArgs) { // Describe program function Console.WriteLine ("QuickSort C#.NET Sample Application\n"); // Prompt user for filenames Console.Write ("Source: "); string szSrcFile = Console.ReadLine (); Console.Write ("Output: "); 8 string szDestFile = Console.ReadLine (); } } } „ 从控制台进行读取 Console 类的 ReadLine() 方法提示用户输入,并返回输入的字符串。它会 自动地为字符串处理内存分配,由于使用了 .NET 垃圾回收器,您不需要做任何 释放内存的工作。 „ 程序输出 从菜单中选择 Debug | Start Without Debugging 来运行程序。这是到此 为止来自 QuickSort 应用程序的输出的屏幕截图。 步骤 5. 使用数组 在对从输入读取的行进行排序之前,程序需要将其存储到一个数组中。我们 将简要讨论可实现对象数组的 .NET 基类的用法。 „ 修改源代码 更改 C# 源文件 (class1.cs),如下面以斜体突出显示的代码所示。其他的 差异(如类名)可忽略不计。 // Import namespaces using System; using System.Collections; // Declare namespace namespace MsdnAA { // Declare application class 9 class QuickSortApp { // Application initialization static void Main (string[] szArgs) { // Describe program function Console.WriteLine ("QuickSort C#.NET Sample Application\n"); // Prompt user for filenames Console.Write ("Source: "); string szSrcFile = Console.ReadLine (); Console.Write ("Output: "); string szDestFile = Console.ReadLine (); // TODO: Read contents of source file ArrayList szContents = new ArrayList (); } } } „ 使用 ArrayList 类 我们将导入 System.Collections 命名空间,这样我们就可以直接引用 ArrayList。此类实现大小可动态调整的对象数组。要插入新的元素,可以简单 地将对象传递到 ArrayList 类的 Add() 方法。新的数组元素将引用原始的对 象,而垃圾回收器将处理它的释放。 string szElement = "insert-me"; ArrayList szArray = new ArrayList (); szArray.Add (szElement); 要检索现有的元素,请将所需元素的索引传递给 Item() 方法。另外,作为 一种简写形式,还可以使用方括号 operator [],它实际上映射到 Item() 方法。 Console.WriteLine (szArray[2]); Console.WriteLine (szArray.Item (2)); ArrayList 类中还有许多其他方法,但是插入和检索都是我们需要在此示例 中使用的。请查阅 MSDN 库以获得完整的参考指南。 步骤 6. 文件输入/输出 现在,让我们来实现读取输入文件和写入输出文件。我们将每一行读取到一 10 个字符串数组中,然后输出该字符串数组。在下一步中,我们将使用 QuickSort 算法来对该数组进行排序。 „ 修改源代码 更改 C# 源文件 (class1.cs),如下面以斜体突出显示的代码所示。其他的 差异(如类名)可忽略不计。 // Import namespaces using System; using System.Collections; using System.IO; // Declare namespace namespace MsdnAA { // Declare application class class QuickSortApp { // Application initialization static void Main (string[] szArgs) { ... ... ... // Read contents of source file string szSrcLine; ArrayList szContents = new ArrayList (); FileStream fsInput = new FileStream (szSrcFile, FileMode.Open, FileAccess.Read); StreamReader srInput = new StreamReader (fsInput); while ((szSrcLine = srInput.ReadLine ()) != null) { // Append to array szContents.Add (szSrcLine); } srInput.Close (); fsInput.Close (); // TODO: Pass to QuickSort function // Write sorted lines FileStream fsOutput = new FileStream (szDestFile, FileMode.Create, FileAccess.Write); StreamWriter srOutput = new StreamWriter (fsOutput); for (int nIndex = 0; nIndex < szContents.Count; nIndex++) { // Write line to output file srOutput.WriteLine (szContents[nIndex]); } 11 srOutput.Close (); fsOutput.Close (); // Report program success Console.WriteLine ("\nThe sorted lines have been written.\n\n"); } } } „ 从源文件进行读取 使用 FileStream 类打开源文件,然后加入 StreamReader 类,这样我们就 可以使用它的 ReadLine() 方法了。现在,我们调用 ReadLine() 方法,直到它 返回 null,这 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 示到达文件结尾。在循环过程中,我们将读取的行存储到字符 串数组中,然后关闭这两个对象。 „ 写入输出文件 假设已经用 QuickSort 对字符串数组进行了排序,接下来要做的事情就是 输出数组的内容。按照同样的方式,我们将 StreamWriter 对象附加到 FileStream 对象上。这使得我们可以使用 WriteLine() 方法,该方法能够很方 便地模仿 Console 类的行为。一旦遍历了数组,我们便可以象前面一样关闭这 两个对象。 12 步骤 7. 创建函数 最后一步就是创建一个函数来在字符串数组中运行 QuickSort。我们将此函 数放到应用程序类 QuickSortApp 之中。 „ 修改源代码 更改 C# 源文件 (class1.cs),如下面以斜体突出显示的 代码所示。其他 的差异(如类名)可忽略不计。 // Import namespaces using System; using System.Collections; using System.IO; // Declare namespace namespace MsdnAA { // Declare application class class QuickSortApp { // Application initialization static void Main (string[] szArgs) { ... ... ... // Pass to QuickSort function QuickSort (szContents, 0, szContents.Count - 1); ... ... ... } // QuickSort implementation static void QuickSort (ArrayList szArray, int nLower, int nUpper) { // Check for non-base case if (nLower < nUpper) { // Split and sort partitions int nSplit = Partition (szArray, nLower, nUpper); QuickSort (szArray, nLower, nSplit - 1); QuickSort (szArray, nSplit + 1, nUpper); } } // QuickSort partition implementation static int Partition (ArrayList szArray, int nLower, int nUpper) { // Pivot with first element 13 int nLeft = nLower + 1; string szPivot = (string) szArray[nLower]; int nRight = nUpper; // Partition array elements string szSwap; while (nLeft <= nRight) { // Find item out of place while (nLeft <= nRight) { if (((string) szArray[nLeft]).CompareTo (szPivot) > 0) break; nLeft = nLeft + 1; } while (nLeft <= nRight) { if (((string) szArray[nRight]).CompareTo (szPivot) <= 0) break; nRight = nRight - 1; } // Swap values if necessary if (nLeft < nRight) { szSwap = (string) szArray[nLeft]; szArray[nLeft] = szArray[nRight]; szArray[nRight] = szSwap; nLeft = nLeft + 1; nRight = nRight - 1; } } // Move pivot element szSwap = (string) szArray[nLower]; szArray[nLower] = szArray[nRight]; szArray[nRight] = szSwap; return nRight; } } } „ QuickSort() 函数 这个函数需要三个参数:对数组的引用、下界和上界。它调用 Partition() 函数将数组分成两部分,其中一部分包含 Pivot 值之前的所有字符串,另一部 14 分包含 Pivot 值之后的所有字符串。然后,它调用自身来对每个部分进行排序。 上面修改中的注释应该说明了每个代码块的作用。唯一的新概念就是 CompareTo() 方法的使用,该方法是 String 类的成员,并且应该是自说明的。 „ 运行 QuickSort 应用程序 这一步完成 QuickSort C# 示例应用程序。现在,可以构建项目并运行应用 程序。需要提供一个示例文本文件,以供其进行排序。将该文件放在与 EXE 文 件相同的目录中。 „ 程序输出 下面是已完成的 QuickSort C# .NET 示例应用程序的输出。可以查看示例 输入文件 'example.txt' 和输出文件 'output.txt'。 步骤 8. 使用调试器 调试器是诊断程序问题的一个必不可少的工具。我们觉得有必要在本入门指 南中对其进行介绍。这最后一步将向您展示如何走查程序和使用诸如 QuickWatch 这样的功能。 „ 设置断点 15 当程序在调试器中运行时,断点会暂停程序的执行,从而使开发人员能够控 制调试器。要设置断点,请右键单击您想要程序暂停的行,然后单击 InsertBreakpoint,如下所示。 注:带有断点的行以红色突出显示。通过再次右键单击该行并选择 Remove Breakpoint 可以删除断点。 „ 单步调试程序 既然设置了断点(最好是在前面所示的行中),就让我们在调试器中运行程 序。在 Debug 菜单中,选择 Start 而不是同前面一样选择 Start Without Debugging。这样就在调试器中启动了程序,并因而激活了断点。 一旦程序遇到断点,调试器便会接收程序的控制。这时会有一个箭头指向当 前执行的行。 要单步调试一行代码,可以选择 Debug | Step Over 并观察光标是否移到 下一行。Debug | Step Into 命令允许您单步执行将要调用的函数。进行两次 Step Over 之后的屏幕如下所示。 如果想要程序在遇到下一个断点、遇到异常或退出之前继续执行,请从菜单 16 中选择 Debug | Continue。 „ 检查变量值 当您可以控制调试器时,可将鼠标指针移到变量上以获得它的基本值。 您也可以右键单击变量,然后从上下文菜单中选择 QuickWatch。QuickWatch 将为您提供关于某些变量(如 ArrayList 对象)的更多详细信息。 „ 其他调试器工具 Visual Studio 调试器具有许多其他工具(例如 Call Stack 查看器)的功 能,可以使用此调试器来查看到此为止调用的函数。还可以获得内存转储和关于 进程中线程的信息。我们鼓励您使用这些功能强大的调试工具。 小结 本入门指南旨在帮助您用 Visual Studio 构建一个简单的 C# 项目。它无 17 法进行全面的介绍。我们鼓励您查询关于 C# 和 .NET 的其他资源,以便更多地 学习这些技术。在完成本教程之后,您至少有了一个可用的项目,在您研究 Visual C# 时,可以从修改此这些代码开始。 为了方便起见,我们提供了完整的源程序和项目文件。您可以通过本文档顶 部的目录来访问它们。 „ 其他资源 我们强烈推荐下面这些关于 C# 和 .NET 平台的书籍。它们是开发人员尝试 学习这些新技术的有益资源。 《C# 高级编程第四版》 英文名为《Professional C# 2005》 《C#.NET 技术内幕》 英文名为《Microsoft Visual C#.NET 2003 Unleashed》 第二章 面向对像 ORM ORM 的全称是 Object/Relation Mapping,即对象/关系映射。ORM 也可理解 是一种规范,具体的 ORM 框架可作为应用程序和数据库的桥梁。目前 ORM 的产品 非常多,比如 Apache 组织下的 OJB,Oracle 的 TopLink,JDO 等等。 一、 什么是 ORM ORM 并不是一种具体的产品,而是一类框架的总称,它概述了这类框架的基 本特征:完成面向对象的程序设计语言到关系数据库的映射。基于 ORM 框架完成 映射后,既可利用面向对象程序设计语言的简单易用性,又可利用关系数据库的 技术优势。 面向对象程序设计语言与关系数据库发展不同步时,需要一种中间解决方 案,ORM 框架就是这样的解决方案。笔者认为,随着面向对象数据库的发展,其 理论逐步完善,最终会取代关系数据库。只是这个过程不可一蹴而就,ORM 框架 在此期间内会蓬勃发展。但随着面向对象数据库的出现,ORM 工具会自动消亡。 18 二、 为什么需要 ORM 在上一节已经基本回答了这个问题,面向对象的程序设计语言,代表了目前 程序设计语言的主流和趋势,其具备非常多的优势,比如: „ 面向对象的建模、操作。 „ 多态、继承。 „ 摒弃难以理解的过程。 „ 简单易用,易理解性。 但数据库的发展并未与程序设计语言同步,而且,关系数据库系统的某些优 势,也是面向对象的语言目前无法解决的。比如: „ 大量数据操作查找、排序。 „ 集合数据连接操作、映射。 „ 数据库访问的并发、事务。 „ 数据库的约束、隔离。 面对这种面向对象语言与关系数据库系统并存的局面,采用 ORM 就变成一种 必然。 三、 流行的 ORM 框架简介 目前 ORM 框架的产品非常多,除了各大著名公司、组织的产品外,甚至,其 他一些小团队也都有推出自己的ORM框架。目前流行的ORM框架有如下这些产品。 „ 大名鼎鼎的(N)Hibernate:出自 Gavin King 的手笔,目前最流行的开源 ORM 框架,其灵巧的设计,优秀的性能,还有丰富的文档,都是其迅速 风靡全球的重要因素。 „ 传统的 Entity EJB:Entity EJB 实质上也是一种 ORM 技术,这是一种备 受争议的组件技术,很多人说它非常优秀,也有人说它一钱不值。事实 上,EJB 为 J2EE 的蓬勃发展赢得了极高的声誉,就笔者的实际开发经验 而言,EJB 作为一种重量级、高花费的 ORM 技术上,具有不可比拟的优 势。但由于其必须运行在 EJB 容器内,而且学习曲线陡峭,开发周期、 19 成本相对较高,因而限制 EJB 的广泛使用。 „ IBATIS:Apache 软件基金组织的子项目。与其称它是一种 ORM 框架,不 如称它是一种 “Sql Mapping”框架。相对 Hibernate 的完全对象化封 装,iBATIS 更加灵活,但开发过程中开发人员需要完成的代码量更大, 而且需要直接编写 SQL 语句。 „ Oracle 的 TopLink:作为一个遵循 OTN 协议 离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载 的商业产品,TopLink 在开 发过程中可以自由下载和使用,但一旦作为商业产品使用,则需要收取 费用。可能正是这一点,导致了 TopLink 的市场占有率。 „ OJB:Apache 软件基金组织的子项目。开源的 ORM 框架,但由于开发文 档不是太多,而且 OJB 的规范一直并不稳定,因此并未在开发者中赢得 广泛的支持。 第三章 Spring.NET 入门 一、 Spring.NET 概览 Spring.NET 是一个关注于.NET 企业应用开发的应用程序框架。它能够提供 宽广范围的功能,例如依赖注入、面向方面编程(AOP)、数据访问抽象, 以及 ASP.NET 集成等。基于 java 的 spring 框架的核心概念和价值已被应用到.NET。 Spring.NET 1.0 包含一个完全功能的依赖注入容器和 AOP 库。后续的发布将包 含对 ASP.NET、Remoting 和数据访问的支持。下图展现出了 Spring .NET 的各 个模块。具有黑色阴影的模块包含在 1.0 版本中,其他模块计划在将来的发布中 推出。在很多情况下,你可以在我们的下载网站中发现可以工作的计划模块的实 现。 20 Spring .NET 框架概览 Spring.Core 库是框架的基础, 提供依赖注入功能。Spring.NET 中大多数类 库依赖或扩展了 Spring.Core 的功能。IObjectFactory 接口提供了一个简单而 优雅的工厂模式,移除了对单例和一些服务定位 stub 写程序的必要。允许你将 真正的程序逻辑的配置和依赖的详细情况解耦。作为对 IObjectFactory 的扩展, IApplicationContext 接口也在 Spring.Core 库中,并且添加了许多企业应用为 中心的功能,例如利用资源文件进行文本本地化、事件传播、资源加载等等。 Spring.Aop 库提供对业务对象的面向方面编程(AOP) 的支持。Spring.Aop 库是对 Spring.Core 库的补充,可为声明性地建立企业应用和为业务对象提供服 务提供坚实的基础。 Spring.Web 库扩展了 ASP.NET,添加了一些功能,如对 ASP.NET 页面的依赖 注入,双向数据绑定,针对 ASP.NET 1.1 的 Master pages 以及改进的本地化支 持。 21 Spring.Services 库可让你将任何“一般”对象(即没有从其他特殊的服务基 类继承的对象)暴露为企业服务或远程对象,使得.NET Web services 获得依赖 注入的支持,并覆盖属性元数据。此外还提供了对 Windows Service 的集成。 Spring.Data 库提供了数据访问层的抽象,可以被多个数据访问提供者(从 ADO.NET 到多个 ORM 提供者)应用。它还包含一个对 ADO.NET 的抽象层,移除 了为 ADO.NET 编写可怕的编码和声明性的事务管理的必要。 Spring.ORM 库提供了对常见对象关系映射库的的集成,提供了一些功能,比 如对声明性事务管理的支持。 二、 第一个 Spring.NET 的程序 „ 建立项目 项目名称为:SpringSample,NameSpace 为“OKEC.Sample.Spring”。 „ 添加 HelloTest 类 HelloTest.cs using System; namespace OKEC.Sample.Spring { /// /// HelloTest 的摘要说明。 /// public class HelloTest { public HelloTest() { // // TODO: 在此处添加构造函数逻辑 // } public void Test() { Console.WriteLine("This is Spring.NET Sample Test!"); Console.WriteLine("Please press Enter close the windows!"); Console.ReadLine();//让程序停留,回车关闭。 } 22 } } „ 添加 Spring.NET 的配置文件 文件名:Spring_bean.xml,属性设置为:嵌入的资源/ Embedded Resource „ 建立 Spring.NET 的容器初始化对像 SpringContext.cs using System; using Spring.Core; using Spring.Aop; using System; using Spring.Core; using Spring.Aop; using Spring.Context; using Spring.Context.Support; namespace OKEC.Sample.Spring { /// /// SpringFactory 的摘要说明。 /// public class SpringContext { public SpringContext() { // // TODO: 在此处添加构造函数逻辑 // } private static bool isInit = false; private static IApplicationContext context; public static void init() { string[] xmlFiles = new string[1]; 23 xmlFiles[0] = "assembly://SpringSample/OKEC.Sample.Spring/Spring_bean.xml"; context = new XmlApplicationContext(xmlFiles); i
本文档为【Spring.NET&NHibernate从入门到精通】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_813615
暂无简介~
格式:pdf
大小:546KB
软件:PDF阅读器
页数:43
分类:互联网
上传时间:2010-12-16
浏览量:64