参考文章:http://www.cnblogs.com/GoodHelper/archive/2009/10/25/SpringNET_Config.html

一、环境下载及安装

到Spring的官方网站下载Spring.NET框架的安装文件(Spring.NET-1.3.0-RC1.exe)。目前Spring.NET最新的版本是1.3。下载并解压后就可以了。Spring.NET框架经常用到的一下几个文件:

  • Common.Logging.dll(必要)
  • Spring.Core.dll(必要)
  • Spring.Data.dll
  • Spring.Aop.dll(可选)
  • Spring.Data.NHibernate21.dll
  • Spring.Web.dll

在基于XML的工厂中,这些对象定义表现为一个或多个<object>子节点,它们的父节点必须是<objects>(按:objects节点的xmlns元素是必需的,必须根据不同的应用添加不同的命名空间,以便有IDE的智能提示。

<objects xmlns="http://www.springframework.net">
<object id="BLL" type="CloudLink.BLL.BLLFactory,CloudLink.BLL"></object>
<object id="DAL" type="CloudLink.DAL.DALFactory,CloudLink.DAL"></object>
</objects>

二、实例化spring.net容器的方式

1、实际物理地址

首先需要新建一个Object.xml文件,然后从Spring.net手册中复制配置模板:

<?xml version="1.0" encoding="utf-8" ?>

<objects xmlns="http://www.springframework.net"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.net
http://www.springframework.net/xsd/spring-objects.xsd"> <object id="ProductDAO" type="DAO.ProductDAO, DAO"> </object> </objects>

修改这个文件的生成方式为“嵌入的资源”。注意一定要修改,不然容器初始化时就会抛异常。然后通过如下代码来获取这个配置文件:

IResource input = new FileSystemResource(@"D:\Objects.xml");  //实际物理路径
IObjectFactory factory = new XmlObjectFactory(input);

2、程序集下寻找配置文件

这种方式需满足URI语法。file://文件名  assembly://程序集名/命名空名/文件名

string[] xmlFiles = new string[]
{
"file://Objects.xml"
};
IApplicationContext context = new XmlApplicationContext(xmlFiles); IObjectFactory factory = (IObjectFactory)context;
Console.ReadLine();

然后在应用程序配置文件添加如下配置:

<?xml version="1.0" encoding="utf-8" ?>
<configuration> <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> <context>
<resource uri="assembly://IocDemo/IocDemo/Objects.xml"/>//就是这句
<resource uri="config://spring/objects" />
</context> <objects xmlns="http://www.springframework.net">
<description>一个简单的控制反转例子</description>
<object id="ProductDAO" type="DAO.ProductDAO, DAO">
<constructor-arg name="accessor" value="1"/>
</object>
</objects> </spring> </configuration>

3、直接在应用程序配置文件中添加spring节点

<?xml version="1.0" encoding="utf-8" ?>
<configuration> <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> <context>
<resource uri="config://spring/objects" />
</context> <objects xmlns="http://www.springframework.net">//就是这一堆
<description>一个简单的控制反转例子</description>
<object id="ProductDAO" type="DAO.ProductDAO, DAO">
<constructor-arg name="accessor" value="1"/>
</object>
</objects>
</spring> </configuration>

其中的<constructor-arg name="accessor" value="1"/>,表示ProductDAO的构造函数有一个名称accessor的参数,默认值为1。如果类有属性,那么需要添加<property name="属性名" value="默认值"/>。

如果构造函数的参数为引用类型的,那么需要将引用类型也加上。详见:http://www.cnblogs.com/supheart/p/4317574.html

三、普通调用方式、抽象工厂模式与IOC模式对比

1、数据访问层

    public interface IProductDAO
{
/// <summary>
/// 获取产品名称
/// </summary>
/// <returns></returns>
string GetProductName();
} public class ProductDAO : IProductDAO
{
private string _accessor; public ProductDAO(string accessor)
{
this._accessor = accessor;
} /// <summary>
/// 获取产品名称
/// </summary>
/// <returns></returns>
public string GetProductName()
{
return "Hello, " + this._accessor + "! The product name is IPhone 7!";
}
}

2、抽象工厂类

    public static class DataAccess
{
public static IProductDAO CreateProductDAO(string accessor)
{
return new ProductDAO(accessor);
}
}

3、三种方式

        static void Main(string[] args)
{
//一般方法
NormalMethod(); //抽象工厂模式
FactoryMethod(); //IOC方式
IocMethod(); Console.Read();
} private static void NormalMethod()
{
IProductDAO dao = new ProductDAO("NormalMethod");
Console.WriteLine(dao.GetProductName());
} private static void FactoryMethod()
{
IProductDAO dao = DataAccess.CreateProductDAO("FactoryMethod");
Console.WriteLine(dao.GetProductName());
} private static void IocMethod()
{
IApplicationContext context = ContextRegistry.GetContext();
IProductDAO dao = context.GetObject("ProductDAO", new[] { "IocMethod" }) as IProductDAO;
Console.WriteLine(dao.GetProductName());
}

运行结果:

本文示例代码:http://files.cnblogs.com/files/wangwust/IocDemo.zip

【Spring.Net】- 环境搭建的更多相关文章

  1. 最新版ssh hibernate spring struts2环境搭建

    最新版ssh hibernate spring struts2环境搭建 最新版spring Framework下载地址:spring4.0.0RELEASE环境搭建 http://repo.sprin ...

  2. Spring MVC 环境搭建(二)

    在Spring MVC 环境搭建(一)中我们知道 spring 的配置是通过 urlmapping 映射到控制器,然后通过实现Controller接口的handlerequest方法转向页面. 但这存 ...

  3. Spring MVC 环境搭建(一)

    一.建立 JavaWeb 项目 1.建立一个 Java 项目. 2.在项目下新建一个文件夹 webapp (命名可自取,这个目录即是网站根目录),再在该文件夹下新建一个 WEB-INF 文件夹(命名固 ...

  4. Spring MVC 环境搭建(maven+SpringMVC+mybatis+Freemarker)

    Spring MVC 环境搭建(maven+SpringMVC+mybatis+Freemarker) 一.准备工作 1.Eclipse Java EE IDE(4.4.1) 2.JDK 3.Tomc ...

  5. Spring开发环境搭建教程

    Spring开发环境搭建 JDK7以上版本 eclispe for j2ee 4.0以上版本 Spring frameWorks 3.0以上版本 至于前两个我们就不介绍,直接百度就可以了,对于Spri ...

  6. 第一节 Spring的环境搭建

     正在构建,扫一扫,敬请期待 和玩得来的人在一起玩才叫玩! 和玩不来的人在一起玩,那种感觉就像加班啊! 关注胖个人微信公众账号,希望对各位学生有所帮助! --胖先生 Spring框架,什么是Sprin ...

  7. Spring开发环境搭建(Eclipse)

    开发环境搭建,主要包含2部分: Java安装 Eclipse安装 为易于学习,我们只安装这2个部分,对于一般开发学习也足够了.如果你有其他要安装的,酌情添加. Java安装 我们使用Java8: 下载 ...

  8. 1 IDEA 安装 及 IDEA开发 spring的环境搭建

    摘要: 主要讲解使用 IDEA 开发 Spring MVC 的环境搭建,Maven的简单教学. 参考1:https://my.oschina.net/gaussik/blog/385697 参考2:h ...

  9. Spring框架环境搭建

    环境要求:jdk  1.7 及以上.Spring版本:4.3.2 1.建立普通的java 工程 2.新建lib目录,并将一下5个核心jar包拷贝过来,并加入classpath中 下载地址: http: ...

  10. 【原】Spring activiti 环境搭建之数据库创建

    由于在开发工作流的时候,避免不了要保存一些数据和流程走向;所以在搭建Spring activiti开发环境的时候需要把官方提供的23张表创建到我们的DB,后续的流程都会在这些表中记录. 1.创建代码如 ...

随机推荐

  1. 关于python的菜鸟教程

    1.正则表达式 http://www.runoob.com/regexp/regexp-metachar.html 2.python正则表达死 http://www.runoob.com/python ...

  2. QWT编译与配置-Windows/Linux环境

    QWT编译与配置-Windows/Linux环境 QWT和FFTW两种开源组件是常用的工程软件支持组件,QWT可以提供丰富的绘图组件功能,FFTW是优秀数字波形分析软件.本文使用基于LGPL版权协议的 ...

  3. rails应用无法读取kafka数据报错Kafka::Error: Failed to find group coordinator

    如果确保kafka中有数据,rails应用中却无法读取到,或报如下错误: Kafka::Error: Failed to find group coordinator   一般有两种情况,解决:   ...

  4. 《HTML与CSS知识》系列分享专栏

    收藏HTML和CSS方面的技术文章,作为一个WEB开发者,必须要知道HTML和CSS方面的知识,即使作为后台开发者也应该知道一些常用的HTML和CSS知识,甚至架构师也要了解,这样才会开发出实用的网站 ...

  5. BZOJ4300_绝世好题_KEY

    题目传送门 刚开始是看到这道题目还以为是序列连续的. 当然了,序列可以不连续. 设f[i]表示到第i位时的序列的最长长度. 取cnt=Max f[j]+1,然后转移回去使f[j]=cnt. 这是为了让 ...

  6. 北京Uber优步司机奖励政策(3月27日)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  7. Kafka在高并发的情况下,如何避免消息丢失和消息重复?kafka消费怎么保证数据消费一次?数据的一致性和统一性?数据的完整性?

    1.kafka在高并发的情况下,如何避免消息丢失和消息重复? 消息丢失解决方案: 首先对kafka进行限速, 其次启用重试机制,重试间隔时间设置长一些,最后Kafka设置acks=all,即需要相应的 ...

  8. 14、Java并发编程:CountDownLatch、CyclicBarrier和Semaphore

    Java并发编程:CountDownLatch.CyclicBarrier和Semaphore 在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch ...

  9. Spring Boot 2.x Redis多数据源配置(jedis,lettuce)

    Spring Boot 2.x Redis多数据源配置(jedis,lettuce) 96 不敢预言的预言家 0.1 2018.11.13 14:22* 字数 65 阅读 727评论 0喜欢 2 多数 ...

  10. 三分钟小课堂-----------------docker(三)增删改查命令

    主要为docker容器的增删改查命令 1  创建容器: docker run   -it   --name 别名  image_name   /bin/bash --name 别名 -d 后台 -t ...