【发布时间】:2018-05-13 00:59:06
【问题描述】:
我在我的项目中使用 Guice for DI,并且我希望在我的类中对非单例对象进行延迟初始化。
我尝试使用Provider,但每次调用get() 方法时它都会返回新实例。
public class MyClass {
@Inject
private Provider<Service> serviceProvider; //Service is NOT Singleton
public void meth1() {
Service s1 = serviceProvider.get();
}
public void meth2() {
Service s2 = serviceProvider.get();
}
//I want s1 and s2 to be the same object
}
Guice 能做到吗,还是有其他做法可以做到这一点?
【问题讨论】:
-
“我希望 s 和 s2 是同一个对象” - 为什么?如果它们是对同一实例的 2 个引用,那么为什么首先需要 2 个引用?
-
为什么不这样做:
Service s2 = s;? “惰性注入”是什么意思? -
我编辑消息。希望现在我的意思更明确
-
Suppliers.memoize(serviceProvider::get)
标签: java dependency-injection guice provider