要求是我们有一个接口,并且有很多实现。现在,在请求输入的基础上我需要选择实现,例如假设请求Object中有一个clientID参数,并且在clientID的基础上,我需要选择实现类。
<bean id = "clientService" class =" com.ecourt.CLientServiceImpl">
<property name="someInterface" ref = "this needs to be changed for every client base on the request Input"/>
</bean>
<!-- Below mentioned Beans are Impl of "someInterface" property of above define bean --!>
<bean id ="clientOneImpl" class = "com.ecourt.clienOneImpl"/>
<bean id ="clientTwoImpl" class = "com.ecourt.clienTwoImpl"/>
可能的解决方案可以是SpEL表达式,但到目前为止,我设法只找到了这个:
<property name="someInterface" ref="#{clientID =='101'?clientOneImpl:clientTwoImpl}"/>
但是通过这个条件语句,我可以处理最多两个客户端。有没有办法处理两个以上的客户?有没有办法做到这一点?任何帮助都将受到高度赞赏。
答案 0 :(得分:0)
我知道你正在构建一个基于Spring的应用程序,但这是Factory模式的经典案例。因此,您可以使用它来实现此目的,其中您返回与给定clientID相对应的实现(来自您的工厂)。
答案 1 :(得分:0)
有两种解决方案来自我的脑海。