输入参数能动态调决定调用哪个实现类 spring的一个特性

今天做公司的以前项目的时候发现项目中有个特别好的东西,记录下来,分享一下

发现spring有个这样的功能,我也不知道这个是东西应该怎么称呼,就是通过输入参数,动态决定调用接口的实现类。简单理解就是在spring配置文件定义若干个参数,然后,定义同样多的实现类实现同一个接口,在接口调用方法中,通过输入参数,就能动态决定接口调用具体哪个实现类。这样的好处就是对外发布接口时,接口通过参数能动态的调用某个服务。如果你注重于系统的可扩展性,这个方法确实是个好方法,我重新建了个工程,用来更加简明的理解这个实现过程。

 

工程结构如图:myeclipse工程

 

image

 

首先看spring配置文件,定义了三个bean,其中myService,myService2是接口MyService的实现类

 

image

 

其中MyServiceMg中定义了一个map,在spring加载的时候会把配置文件里的这个map动态的加载到 mappingServices里去,看MyServiceMy类

 

image

 

在这个handle方法里就是根据参数来决定MyService动态调用的实现类

 

看测试结果就明白了

 

image

三个测试结果出来了,第一个和第二个参数都在配置文件里有配置,所以能动态调用相应的实现类来实现,第三个没有配置,所以抛出异常,怎么样,这个东西是不是有点意思了,能动态调用具体的实现类,我想想以后肯定很多地方能够用到

 

附件已上传:https://files.cnblogs.com/wxwall/myProject.zip

欢迎大家拍砖!

posted @ 2013-06-27 21:40  wxwall  阅读(2610)  评论(1编辑  收藏  举报