gpt4 book ai didi

java - 使用 Guice,在子类中注入(inject)依赖项

转载 作者:行者123 更新时间:2023-11-30 03:48:33 24 4
gpt4 key购买 nike

我想在使用 guice 实例化子类时将依赖项注入(inject)到父类中。在下面的示例中,我尝试创建 TrainingCommandData 的实例,同时我希望能够在运行时使用 Guice 注入(inject) TelemetryServiceClient。我怎样才能做到这一点?

public class TrainingCommandData extends CommandData {

private Intent intent;

public TrainingCommandData(UserCommandResource userCommandResource, Intent intent) {
super(userCommandResource);
this.intent = intent;
}
}

public class CommandData {

private TelemetryServiceClient telemetryServiceClient;
private UserCommandResource userCommandResource;

@Inject
public void setTelemetryServiceClient(TelemetryServiceClient telemetryServiceClient) {
this.telemetryServiceClient = telemetryServiceClient;
}

public CommandData(UserCommandResource userCommandResource) {
this.userCommandResource = userCommandResource;
}
}

最佳答案

当你扩展一个类时,guice 会为你处理父依赖项的注入(inject)。因此,您只需让 Guice 为您创建一个 TrainingCommandData 实例,您就会自动注入(inject) TelemetryServiceClient。

上面的代码有一些问题:

  1. 你需要将“@Inject”放在你的非默认构造函数上......当然guice必须能够为你创建所有参数。如果您现在只在运行时使用这些参数,请查看辅助注入(inject)扩展
  2. 在您的用例中,使用 setter 注入(inject)并不是一个好的选择...为什么您的命令数据应该表明可以在运行时设置服务的新实例?我不会提供 setter,而是使用字段注入(inject),或者,如果您不喜欢的话,可以使用构造函数注入(inject)。

关于java - 使用 Guice,在子类中注入(inject)依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24975971/

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