gpt4 book ai didi

java - 通过 Java 中的依赖注入(inject)进行继承(后期绑定(bind))

转载 作者:IT老高 更新时间:2023-10-28 13:56:50 27 4
gpt4 key购买 nike

我正在使用 Spring DI 连接我的组件,但遇到了这个问题。

我有一个具有多个实现的 BaseService 类。它上面的层有一个构建器,它调用服务来获取数据以填充 POJO。我需要调用的服务实现(ServiceA,ServiceB)根据我需要构建的POJO的类型进行更改。

在这种情况下,如何 Autowiring 服务,因为它需要后期绑定(bind)服务。我该如何应对这种情况? (Spring DI 中的示例真的很有帮助)

Builder calling Services

我阅读了类似的问题,但找不到答案。而且我读到 SOA 模式(例如 Service Host)为确切的用例提供了不同的解决方案。

请帮忙。谢谢

最佳答案

使用 FactoryBean 怎么样? :

public class BuilderFactory implements FactoryBean<Builder> {

@Autowired
private ApplicationContext appContext;

...

@Override
public Builder getObject() {
Builder builder = new Builder();
switch(something()) {
case "foo":
builder.service = new ServiceA();
break;
case "bar":
builder.service= new ServiceB();
break;
...
default:
//handle cases where it's unclear which type to create

}
return builder;
}

}

其中 Builder 实例有一个公共(public)/包私有(private)字段 BaseService 服务,该字段在其 getData()buildPojos 中被调用() 以及其他任何方法。

(如果你希望这个字段是私有(private)的,你也可以使用静态工厂方法来实例化 Builder)

关于java - 通过 Java 中的依赖注入(inject)进行继承(后期绑定(bind)),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23976797/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com