gpt4 book ai didi

java - 如何使用 guice 实现全局状态?

转载 作者:行者123 更新时间:2023-11-29 07:43:57 25 4
gpt4 key购买 nike

我想创建一个全局状态(数据对象,而不是服务对象)。

我已经创建了类 MyDataObject

我想避免常规的全局状态,

但更喜欢使用 Guice 依赖注入(inject)。

但是所有教程都展示了如何为服务对象设置 DI 并注册到接口(interface)。

如何根据需要使用 Guice 注入(inject)?

编辑

我试过:

公共(public)类 AppInjector 扩展了 AbstractModule {

@Override
protected void configure() {
bind(E2eResult.class).toInstance(new E2eResult());
}

与:

    @Test
public void sendSearchRequest() throws Exception {

...
e2eResult = injector.getInstance(E2eResult.class);

timerUtils.setTimeOut(criticalBlockTimeOutMilli);
timerUtils.startStopWatch();

...

long timeElapsed = timerUtils.stopStopWatch();
e2eResult.runTime = timeElapsed;


...
}

和:

    public static void main(String... args) throws ClassNotFoundException, IOException {

Injector injector = Guice.createInjector(new AppInjector());
Result result = runTest(classAndMethod);
E2eResult e2eResult = injector.getInstance(E2eResult.class);
}

但我看到 main 中没有新的 long 值。

最佳答案

要注入(inject) GlobalState 类,您应该首先创建它的实例(根据需要设置它),然后将类绑定(bind)到实例:

bind(GlobalState.class)
.toInstance(globalState);

GlobalState 可以在你的“模块”中创建和配置,你可以在这里阅读更多:

https://github.com/google/guice/wiki/GettingStarted

关于java - 如何使用 guice 实现全局状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27502652/

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