gpt4 book ai didi

java - 我如何让 Guice 管理 jar 中的类(如果可能的话)?

转载 作者:行者123 更新时间:2023-12-01 15:15:52 25 4
gpt4 key购买 nike

假设我的类路径中的 jar 中有一个类 A(即,我无法控制其源,因此不能简单地用 @Inject 对其进行注释)。 A 具有以下构造函数定义:

A(B b, C c) {
this.b = b;
this.c = c;
}

在我的代码库中,我有类:

BImpl implements B

CImpl implements C

我的问题是:如何配置 Guice 来管理要注入(inject) BImpl 和 CImpl 的 A 实例(如果它在框架范围内)?

最佳答案

当你说“jar 文件中的类 A”时,我假设你无法控制该类的源 - 你不能简单地将 @Inject 添加到构造函数中。

如果是这种情况,那么您可以像这样定义一个模块:

class MyModule extends AbstractModule {
@Override
protected void configure() {
bind(B.class).to(BImpl.class);
bind(C.class).to(CImpl.class);

try {
bind(A.class).toConstructor(A.class.getConstructor(B.class, C.class));
} catch (NoSuchMethodException e) {
throw new RuntimeException(e);
}
}
}

前两个绑定(bind)是标准的 - 将接口(interface)类型绑定(bind)到实现类型。

最后一个绑定(bind)使用 toConstructor (自 Guice 3.0 起),它允许您更轻松地“粘合”外部组件 - 就像您的情况一样。

关于java - 我如何让 Guice 管理 jar 中的类(如果可能的话)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11624874/

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