zoukankan      html  css  js  c++  java
  • 企业开发框架NHibernate和Spring.Net简介4

    企业开发框架NHibernate和Spring.Net简介-4
    2008-03-24 14:00
    (2)获得IApplicationContext应用。代码如下所示:
    #001 using System;
    #002 using System.Configuration;
    #003 using Spring.Context;
    #004 ...
    #005 public static void Main ()
    #006 { IApplicationContext ctx = ContextRegistry.GetContext();}
    #007 ...
    如上所述,using System.Configuratoin和using Spring.Context两条using语句被加到了MovieApp类文件中。其中,System.Configuration命名空间可以让应用程序存取保存在配置文件中的Spring.NET的IoC容器的定义;Spring.Context命名空间可以让应用程序存取IApplicationContext类,这个类是应用程序存取Spring.NET所提供的功能的主要方法。
    方法main获得一个IApplicationContext的实现,它的配置信息已经被写在应用程序配置文件内名为<objects/>的节中。
    (3)第一个对象的定义。到目前为止,在应用程序配置文件中还没有对象定义,所以下面定义一个对象。MovieLister实例的XML定义如下所示。
    #001 ...
    #002 <objects>
    #003    <object name="MyMovieLister"
    #004           type="Spring.Examples.MovieFinder.MovieLister, Spring.Examples.MovieFinder">
    #005    </object>
    #006 </object>
    #007 ...
    #003行:MyMovieLister是该对象的唯一标识符,使用这个标识符,这个对象的实例就能够被如下所示的代码中的IApplicationContext引用所获取。
    #001 ...
    #002 public static void Main ()
    #003    { IApplicationContext ctx = ContextRegistry.GetContext();
    #004      MovieLister lister = (MovieLister) ctx.GetObject ("MyMovieLister");}
    #005 ...
    lister实例仍然没有与IMovieFinder接口相应的实现注入。此时如果使用MoviesDirectedBy方法会导致NullReferenceException异常发生,因为lister实例仍然还没有对IMovieFinder的引用。注入到lister实例中的IMovieFinder接口实现的XML配置定义如下。
    #001 ...
    #002     <objects>
    #003        ...
    #004        <object name="MyMovieFinder"
    #005       type="Spring.Examples.MovieFinder.SimpleMovieFinder, Spring.Examples.MovieFinder"/>
    #006        </object>
    #007         ...
    #008     </object>
    #009 ...
    (4)设值注入。下面要做的是把以MyMovieFinder为标识符的IMovieFinder实例注入到以MyMovieLister为标识符的MovieLister实例中。这个注入动作使用设值注入的方法,代码如下所示:
    #001 ...
    #002 <objects>
    #003 <object name="MyMovieLister"
    #004 type="Spring.Examples.MovieFinder.MovieLister, Spring.Examples.MovieFinder">
    #005 <!-- using setter injection... -->
    #006 <property name="movieFinder" ref="MyMovieFinder"/>
    #007 </object>
    #008 <object name="MyMovieFinder"
    #009 type="Spring.Examples.MovieFinder.SimpleMovieFinder, Spring.Examples.MovieFinder"/>
    #010 </object>
    #011 </objects>
    #012 ...
    当IApplicationContext接口取得了MyMovieLister对象以后,Spring.NET的IoC容器将会把对MyMovieLister对象的引用注入到MyMovieLister对象的MovieFinder属性中去。这样,在程序中引用的MovieFinder对象即配置完毕,可以列出某导演导过的所有电影。
    #001 ...
    #002 public static void Main ()
    #003 {
    #004 IApplicationContext ctx = ContextRegistry.GetContext();
    #005 MovieLister lister = (MovieLister) ctx.GetObject ("MyMovieLister");
    #006 Movie[] movies = lister.MoviesDirectedBy("Roberto Benigni");
    #007 Console.WriteLine ("\nSearching for movie...\n");
    #008 foreach (Movie movie in movies)
    #009 {Console.WriteLine (
    #010 string.Format ("Movie Title = '{0}', Director = '{1}'.",
    #011 movie.Title, movie.Director));}
    #012 Console.WriteLine ("\nMovieApp Done.\n\n");
    #013 }
    #014 ...也可以使用构造注入的方法,读者可以自己考虑构造注入方法的实现方式,这里就不再具体介绍。
    现在Spring.Net的1.0.2版本已经发布,读者可以通过访问http://sourceforge.net/ projects/ springnet下载。
  • 相关阅读:
    转发与重定向的区别
    Servlet开发详讲
    Servlet的常见错误
    HTTP请求方式之POST和GET的区别
    Spring各种类型数据的注入
    Spring容器的基本使用
    Python接口自动化-测试用例编写
    Python接口自动化-设计测试用例
    python简明教程之数据结构(列表、元组、字典、集合)
    python简明教程之函数
  • 原文地址:https://www.cnblogs.com/kedach/p/1284868.html
Copyright © 2011-2022 走看看