应该吉斯提供商与被标注@Singleton
?我的理由:如果Provider正在向其他Singleton类提供一个对象,并且该对象本身的创建成本相对较高,那么使用在其@Inject
标记的构造函数中构造昂贵对象的Singleton Provider,将其存储为一个成员,只是在getter中返回已保存的全局变量?像这样的东西:
@Singleton public class MyProvider extends Provider{ private ExpensiveObject obj; @Inject public MyProvider() { /* Create the expensive object here, set it to this.obj */ } @Override public ExpensiveObject get() { return obj; } }
让我在这里澄清一点.这不是关于我是否应该使用@Singleton
或.in(Singleton.class)
.这必须通过创建对象的"缓存"做更多事情.
假设对象创建需要完成多个RPC,例如反序列化JSON或发出HTTP请求.这可能需要一段时间.如果我要使用这个Provider多次注入类,那么只创建一次这样的对象是不是有意义呢?
另请注意,我必须能够使用Provider,因为我需要能够注入Provider.