• 企业开发框架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下载。
  • 相关阅读:
    Linux内核之 I/O多路复用
    Linux内核之 页高速缓存与页回写
    Linux内核之 块I/O层及I/O调度
    Linux内核之 文件I/O
    C++雾中风景15:聊聊让人抓狂的Name Mangling
    音频数据增强及python实现
    深度学习中“过拟合”的产生原因和解决方法
    资料-资源(不定期更新)
    论文翻译:2020_Acoustic Echo Cancellation Challenge Datasets And Testingframework
    语音信号处理概念
  • 原文地址:https://www.cnblogs.com/kedach/p/1284868.html
Copyright © 2020-2023  润新知