Guice提供商是否应该使用@Singleton注释昂贵的成员实例?

 手机用户2602892387 发布于 2023-02-11 23:29

应该吉斯提供商与被标注@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.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有