繁体   English   中英

使用Singleton类中的静态GSON对象将Java对象序列化为JSON

[英]Serialise Java object to JSON using Static GSON object in Singleton class

我有一个关于Singleton类行为的问题。

脚本
我们有合作伙伴使用的Web服务,请求在1秒内频繁发生2-3次。 因此,它们是大量使用的服务。 我们希望以JSON格式存储请求和响应。

截至目前,在每个webservice接口类中,我们已经启动了Gson对象并将java对象序列化为json。


我只是在想,如果我在Singleton类中将Gson对象作为静态对象启动一次,然后将其引用给Json的所有请求/响应序列化java对象,它会导致任何问题吗?

我的意思是,由于有多个Web服务,其中几个被合作伙伴大量使用,因此在所有Web服务中访问的单个GSON实例会导致任何延迟或任何其他问题吗? 如果是,除了记忆之外,还有什么其他好处和问题呢?

来自Gson javadoc:

这是使用Gson的主要类。 Gson通常用于首先构造一个Gson实例,然后在其上调用toJson(Object)fromJson(String, Class)方法。 Gson实例是线程安全的,因此您可以跨多个线程自由地重用它们。

因此,您的服务中只有一个Gson实例,并且可以为每个请求/响应重用它。 作为示例,您可以考虑创建一个类,类似于以下类:

public abstract class GsonUtils {
    private static Gson gson = new Gson();

    static {
        // your extra init logic goes here
    }

    public static <T> T fromJson(String json, Class<T> classOfT) {
        return gson.fromJson(json, classOfT);
    }


    public static String toJson(Object object) {
        if (object == null) {
            return "";
        }
        return gson.toJson(object);
    }
}

或者你可以按照自己的方式做到:-)

最近我处理同样的想法。 有与之相关的旧线程可以将Gson实例用作模型bean中的静态字段(重用)吗? 简单地总结一下,GSON实例应该是线程安全的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM