gpt4 book ai didi

Guice:避免惰性注入(inject)

转载 作者:行者123 更新时间:2023-12-03 14:51:35 24 4
gpt4 key购买 nike

我有一个 Cache 类,创建起来非常昂贵,但之后设置为单例并注入(inject)我的服务层。

@Override
protected void configure() {
bind(Cache.class).in(Singleton.class);

bind(Service.class).to(ServiceImpl.class).in(Singleton.class);
}

@Inject
public ServiceImpl(Cache cache){
this.cache = cache;
}

public Cache(){
//Expensive stuff
}

我的问题是,似乎只有当我尝试访问其中一种方法时,Cache 中的 public() 才会执行

我可以以某种方式使对象在服务器启动时构建吗?

最佳答案

是的,使用 .asEagerSingleton() 绑定(bind)它:

bind(Service.class).to(ServiceImpl.class).asEagerSingleton(); 

请注意,根据该链接, Guice将热切地创造所有 Singleton s 如果在 PRODUCTION 中运行阶段(它会在 DEVELOPMENT 阶段懒惰地创建它们以加快测试部署)。您可以指定 Stage创建 Injector 时:
Injector injector = Guice.createInjector(Stage.PRODUCTION, new MyModule());

关于Guice:避免惰性注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9255419/

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