zoukankan      html  css  js  c++  java
  • Spring.net在.NET应用程序的标准配置文件中用一个自定义节点来配置容器实例

    VS2010中使用Spring.net开发应用程序,在新的framework 4.0运行时下,完全不能运行,因为framework4.0的代码安全模型被改变。Spring之前做的很多发射的工作,就不能通过framework 4.0的验证。具体如何解决暂时没有办法。但是vs2010可以提供2.03.03.54.0运行时,用户在创建工程的时候只需要选择3.5即可。因为spring3.5中能完全跑起来。

    首先去spring.net 官网下载最新版本的spring.net安装包。下载完毕后进行安装,安装好后,打开安装路径,一下是我安装的路径:

    我们找到bin文件夹下面的net文件夹下面的2.0文件夹下面的release文件夹,并打开,里面的一些列dll文件就是spring.net程序集。我们要进行基于spring.net框架开发则必须引用相应的程序集。

    开发spring.net需要写一大堆的配置文件。为了让vs能够智能感应和验证,这时候可以将doc文件夹下面的schema文件夹下面的.xsd文件都复制到Visual Studio 安装路径下的Xml文件夹下面的Schemas文件夹下面。复制完成后就可以智能提示了。效果如下所示:

    Doc文件夹下面还有一个reference文件夹,此文件夹为spring.net的帮助文档(有htmlpdfchm版本)。用户可以查询相应信息。

    下面进行基于Spring.net框架的应用程序的开发。

    首先新建一个工程取名为Com.KimiYang.Domain,一下是新建页面:

    注意要选择3.5框架,默认的4.0中,是不支持spring.net的。点击确定,这样工程就建好了。

    接下去我新建一个类AnimalAnimal为动物,是人呀,狗呀,毛呀的一个抽象,因此我们定义他为一个抽象类;代码如下

     

    1 public abstract class Animal
     2     {
     3         private string _strName;
     4 
     5         public string StrName
     6         {
     7             get { return _strName; }
     8             set { _strName = value; }
     9         }
    10 
    11         public abstract string Shout();
    12 
    13     }
     1 public abstract class Animal
     2     {
     3         private string _strName;
     4 
     5         public string StrName
     6         {
     7             get { return _strName; }
     8             set { _strName = value; }
     9         }
    10 
    11         public abstract string Shout();
    12 
    13     }

    此动物类呢 有一个属性:StrName,表示动物的名字。还有一个抽象方法,Shout,表示叫这个动作。此类为抽象类,因此不能被实例化,实例化是没有意义的。子类继承了此父类,必须实现其抽象方法。

    接下来新建一个一个类Cat,表示猫,代码如下;

    public class Cat : Animal

        {

            
    public override string Shout()

            {

                
    return "喵喵:我叫" + this.StrName;

            }

        }

    Cat类继承了Animal类,因此拥有Animal类的公开属性StrNameCat也实现了Animal类的抽象方法。

    接下去我们在另外新建一个工程,在解决方案中点击右键,添加,新建项目,如下所示:

    新建一个web工程项目,如下图所示。

    接下去要使用spring对刚才建立的Cat类进行管理,因此我们要引用spring程序集,导入Spring.Core.dllSpring.Web.dllSpring.Data.dll这三个基本程序集,导入完之后,在web.config中注册spring.net,首先在configSections节点下面,代码如下:

     

    <sectionGroup name="spring">

                                
    <section name="context" type="Spring.Context.Support.WebContextHandler, Spring.Web"/>

                                
    <section name="parsers" type="Spring.Context.Support.NamespaceParsersSectionHandler, Spring.Core"/>

                       
    </sectionGroup>

    在configuration节点下面如下代码

     

    <spring>

                       
    <parsers>

                                
    <parser type="Spring.Data.Config.DatabaseNamespaceParser, Spring.Data"/>

                                
    <parser type="Spring.Transaction.Config.TxNamespaceParser, Spring.Data"/>

                       
    </parsers>

                       
    <context>

                                
    <!--<resource uri="/Config/Web.xml"/>-->

                       
    </context>

             
    </spring>

     

    httpHandlers下面代码如下

     

    <add verb="*" path="*.aspx" type="Spring.Web.Support.PageHandlerFactory, Spring.Web"/>

     

    httpModules下面代码如下:

    <add name="Spring" type="Spring.Context.Support.WebSupportModule, Spring.Web"/>
    <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

    Spring.net的配置基本上结束了,接下去是如何使用spring.net,首先新建一个工程。用来存放配置文件的,建立好后。新建一个文件夹,取名为DominConfig,在文件夹内建立一个xml文件,取名为DominWeb.xml,设置xml文件属性的生成操作为嵌入的资源。接下去编写xml文档,代码如下

     

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

    <objects xmlns="http://www.springframework.net">

     
    <object id="myCat" type="Com.KimiYang.Domain.Cat,Com.KimiYang.Domain">

        
    <property name="StrName" value="猫"></property>

     
    </object>

    </objects>

    以上代码创建了一个Cat类的实例,讲工程编译,导入到web工程下面,然后将资源配置到webconfig里面,

    <resource uri="assembly://Com.KimiYang.Config/Com.KimiYang.Config.DominConfig/Domin.xml"/>

    接下去在Web下面新建页面WebFrom1.aspx,在它的cs文件下面声明一个字段和属性代码如下:

     

    public partial class WebForm1 : System.Web.UI.Page

        {

            private Animal _myCat;

            public Animal MyCat

            {

                get { return _myCat; }

                set { _myCat = value; }

            }

            protected void Page_Load(object sender, EventArgs e)

            {

                Response.Write(MyCat.Shout());

            }

        }

    在web根目录下面创建SpringConfig目录,在目录里面新建web.xml文件,代码如下

     

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

    <objects xmlns="http://www.springframework.net">

     
    <object type="~/WebForm1.aspx">

        
    <property name="MyCat" ref="myCat"></property>

     
    </object>

    </objects>

    代码的意思为,给WebForm1页面的MyCat属性应用对象myCatmyCatDomain.xml里面实例化出来的对象猫。将web.xml也设置为操作为嵌入的资源,在web.config context节点下面注册。代码如下:

    <resource uri="assembly://Web/Web.SpringConfig/web.xml"/>

     

    接下去运行程序。结果输出为:喵喵,我

  • 相关阅读:
    OOm是否可以try catch ?
    Java中两个线程是否可以同时访问同一个对象的两个不同的synchronized方法?
    PHP请求ws出现的问题
    AndFix注意事项
    thinkphp 查表返回的数组,js解析有UNICode编码,解决办法
    thinkphp用ajax遇到的坑——ajax请求没有反应
    用php获取js变量的值
    android项目安装报错:INSTALL_FAILED_CONFLICTING_PROVIDER
    96
    wuti
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/2041680.html
Copyright © 2011-2022 走看看