输入参数能动态调决定调用哪个实现类 spring的一个特性
2013-06-27 21:40
260 查看
今天做公司的以前项目的时候发现项目中有个特别好的东西,记录下来,分享一下
发现spring有个这样的功能,我也不知道这个是东西应该怎么称呼,就是通过输入参数,动态决定调用接口的实现类。简单理解就是在spring配置文件定义若干个参数,然后,定义同样多的实现类实现同一个接口,在接口调用方法中,通过输入参数,就能动态决定接口调用具体哪个实现类。这样的好处就是对外发布接口时,接口通过参数能动态的调用某个服务。如果你注重于系统的可扩展性,这个方法确实是个好方法,我重新建了个工程,用来更加简明的理解这个实现过程。
工程结构如图:myeclipse工程
首先看spring配置文件,定义了三个bean,其中myService,myService2是接口MyService的实现类
其中MyServiceMg中定义了一个map,在spring加载的时候会把配置文件里的这个map动态的加载到 mappingServices里去,看MyServiceMy类
在这个handle方法里就是根据参数来决定MyService动态调用的实现类
看测试结果就明白了
三个测试结果出来了,第一个和第二个参数都在配置文件里有配置,所以能动态调用相应的实现类来实现,第三个没有配置,所以抛出异常,怎么样,这个东西是不是有点意思了,能动态调用具体的实现类,我想想以后肯定很多地方能够用到
附件已上传:http://files.cnblogs.com/wxwall/myProject.zip
欢迎大家拍砖!
发现spring有个这样的功能,我也不知道这个是东西应该怎么称呼,就是通过输入参数,动态决定调用接口的实现类。简单理解就是在spring配置文件定义若干个参数,然后,定义同样多的实现类实现同一个接口,在接口调用方法中,通过输入参数,就能动态决定接口调用具体哪个实现类。这样的好处就是对外发布接口时,接口通过参数能动态的调用某个服务。如果你注重于系统的可扩展性,这个方法确实是个好方法,我重新建了个工程,用来更加简明的理解这个实现过程。
工程结构如图:myeclipse工程
首先看spring配置文件,定义了三个bean,其中myService,myService2是接口MyService的实现类
其中MyServiceMg中定义了一个map,在spring加载的时候会把配置文件里的这个map动态的加载到 mappingServices里去,看MyServiceMy类
在这个handle方法里就是根据参数来决定MyService动态调用的实现类
看测试结果就明白了
三个测试结果出来了,第一个和第二个参数都在配置文件里有配置,所以能动态调用相应的实现类来实现,第三个没有配置,所以抛出异常,怎么样,这个东西是不是有点意思了,能动态调用具体的实现类,我想想以后肯定很多地方能够用到
附件已上传:http://files.cnblogs.com/wxwall/myProject.zip
欢迎大家拍砖!
相关文章推荐
- 输入参数能动态调决定调用哪个实现类 spring的一个特性
- 输入参数能动态调决定调用哪个实现类
- 使用Spring特性实现接口多实现类的动态调用
- 使用Spring特性实现接口多实现类的动态调用
- 根据参数动态加载bean(一个接口多个实现的调用方法)
- 如果一个父类有多个子类或者一个接口有多个实现的时候,Spring是如何判断该调用哪个的呢?源码分析如下
- 使用Spring特性实现接口多实现类的动态调用
- 使用spring声明式事务,spring使用AOP来支持声明式事务,会根据事务属性,自动在方法调用之前决定是否开启一个事务,并在方法执行之后决定事务提交或回滚事务。
- JS实现是一个文本框(值为参数)输入另一个显示(查询结果)
- 一个接口有多个实现类,当调用接口中的方法时,如何判定用的是哪个实现类
- 带参数的存储过程动态创建一个视图及调用方法[表不固定,作为参数]
- 设计一个学生成绩管理系统,实现对学生成绩的动态管理,实现对学生成绩的输入,显示,删除,查找,插入,最佳,保存,计算,排序等主要功能
- Spring 整合 Quartz -实现 动态设定Trigger参数(三)
- 一个简单RPC框架是如何炼成的(III)——实现带参数的RPC调用
- 用算法实现将一个输入的数字颠倒(输入12345->54321),要求不调用任何系统函数,也不能将输入的数字转换为字符串作为中间过渡
- 【远程调用框架】如何实现一个简单的RPC框架(三)优化一:利用动态代理改变用户服务调用方式
- js实现调用方法(函数)时可动态传入不同参数个数、模拟实现方法(函数)重载
- 动态修改参数cron的值来实现Spring自带定时器动态的执行任务
- 实现一个整数计算器,程序可以接受三个参数,第一个参数“-a”选项执行加法,“-s”选项执行减法,“-m”选项执行乘法,“-d”选项执行除法,后面两个参数为操作数。 例如:输入t
- js实现在文本框输入一个百分数,另一个数跟着动态变化(只允许输入0-100的整数)【支持IE浏览器】