gpt4 book ai didi

java - 使用 Guice 为同一接口(interface)的多个实现进行依赖注入(inject)

转载 作者:行者123 更新时间:2023-11-29 04:18:11 27 4
gpt4 key购买 nike

我想尝试在我的项目中使用 Guice,并坚持解决简单的(从我的角度来看)问题。

假设我有接口(interface)

public interface TradeService {
public boolean buy(Player player, ProductID productId);
}

它有几个实现及其依赖项:

 public CarsTradeService implements TradeService {
//...implementation here...
}

public BoatsTradeService implements TradeService {
//...implementation here...
}

public AirplanesTradeService implements TradeService {
//...implementation here...
}

我了解如何配置实现并为它们提供所需的依赖项 - 为此我需要创建 guice “modules” 看起来像

public class CarsTradeModule extends AbstractModule {
@Override
protected void configure() {
bind(TradeService.class).to(CarsTradeService.class).in(Singleton.class);
}
}

和rest两个服务类似的模块。好的,模块构建。但后来,当我需要将此实现注入(inject)某个类时 - 我如何注入(inject)恰好需要的实现?

例如,如果我需要获取 CarsTradeService 的实例 - 我如何准确获取该实例?

最佳答案

您可以使用 annotatedWith 和 @Named 来做到这一点。

bind(TradeService.class).annotatedWith(Names.named("carsTradeService")).to(CarsTradeService.class).in(Singleton.class);

在类中你想注入(inject)这个你需要使用的bean

@Inject
@Named("carsTradeService")
private TradeService tradeService;

这将注入(inject)您需要的确切类。

关于java - 使用 Guice 为同一接口(interface)的多个实现进行依赖注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50964006/

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