我使用
Spring DI来连接我的组件,我遇到了这个问题.
我有一个BaseService类有多个实现.并且它上面的层有一个构建器,它调用该服务来获取数据以填充POJO.服务实现我需要调用(ServiceA,ServiceB)根据需要构建的POJO的类型进行更改.
在这种情况下,如何自动连接服务,因为需要后期绑定服务.如何解决这种情况? (在Spring DI中的例子真的有帮助)
我读了类似的问题,但找不到答案.我读到SOA模式,如服务主机,为确切的用例提供不同的解决方案.
请帮忙.
谢谢
你可以使用
ServiceLocatorFactoryBean.在你的情况下,你会做这样的事情:
原文链接:https://www.f2er.com/javaschema/281869.htmlpublic interface BaseServiceLocator { BaseService lookup(String qualifier); //use whatever qualifier type makes sense here } <bean id="serviceLocatorfactorybean" class="org.springframework.beans.factory.config.ServiceLocatorfactorybean"> <property name="serviceLocatorInterface" value="your.package.BaseServiceLocator" /> </bean>
那么你的建设者会看起来像这样:
public class Builder { @Autowired private BaseServiceLocator baseServiceLocator; @Override public YourReturnType businessMethod() { SomeData data = getData(); BaseService baseService = baseServiceLocator(data.getType()); //here I am assuming that getType() is a String //whatever }