![](/img/trans.png)
[英]serialise Date object to JSON using Gson in a custom way (annotation)
[英]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.