您的位置:首页 > 编程语言 > Java开发

刚看了一点Spring .NET, 从第一个例子MovieFinder说起(2)

2012-06-09 22:53 211 查看
作者接下来定义了另外一种ImovieFinder接口的实现

<object name="AnotherMovieFinder"
type="Spring.Examples.MovieFinder.ColonDelimitedMovieFinder, Spring.Examples.MovieFinder"><constructor-arg index="0" value="movies.txt"/>

</object>

ColonDelimitedMovieFinder的没有默认构造函数,需要提供一个参数,constructor-arg标签就是指明参数用的

然后替换MyMovieLister 的注入,其实就是得到ImovieFinder接口另外一个实现,直接在config文件中改

<object name="MyMovieLister"
type="Spring.Examples.MovieFinder.MovieLister, Spring.Examples.MovieFinder">
<!-- lets use the colon delimited implementation instead -->
<property name="movieFinder" ref="AnotherMovieFinder"/>
</object>
<object name="MyMovieFinder"
type="Spring.Examples.MovieFinder.SimpleMovieFinder, Spring.Examples.MovieFinder"/>
</object>
<object name="AnotherMovieFinder"
type="Spring.Examples.MovieFinder.ColonDelimitedMovieFinder, Spring.Examples.MovieFinder">
<constructor-arg index="0" value="movies.txt"/></object>

这样就可以得到 ImovieFinder接口的ColonDelimitedMovieFinder实现。

不用重新编译!这就是Spring IOC的好处?

的确:如果用代码写的话要这样:

开始用 SimpleMovieFinder实现ImovieFinder接口

SimpleMovieFinder simple = new SimpleMovieFinder ();

MovieLister movieLister = new movieLister (simple );

如果要改用 ColonDelimitedMovieFinder得话要改代码:

ColonDelimitedMovieFinder colon= new ColonDelimitedMovieFinder ("movie.txt");

MovieLister movieLister = new movieLister (colon );

通过改config文件 ,就不用改代码了!这就是Ioc的好处啊!!???
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: