作者接下来定义了另外一种ImovieFinder接口的实现
type ="Spring.Examples.MovieFinder.ColonDelimitedMovieFinder, Spring.Examples.MovieFinder" >
<constructor-arg index="0" value="movies.txt"/>
</object>
然后替换MyMovieLister 的注入,其实就是得到ImovieFinder接口另外一个实现,直接在config文件中改
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的好处啊!!???