为了账号安全,请及时绑定邮箱和手机立即绑定

我应该为所有对 Servlet 的 doGet/doPost 调用实例化一个共享的

我应该为所有对 Servlet 的 doGet/doPost 调用实例化一个共享的

Helenr 2022-12-21 16:33:28
目前,我正在使用 Google 的 Gson 类将传入的 Ajax JSON 字符串解析为 Java pojo,作为 doGet/doPost 任务的一部分。我以通常的方式从 JSON 字符串中实例化一个新的 Gson 对象:JsonObj jsonObj = new Gson().fromJson(jsonStr, jsonObj.class);问题是我是否应该在 servlet 初始化中实例化一个共享的 gson 对象,以避免new Gson()在每个 servlet doGet/doPost 调用中执行。在这里为每个序列化实例化一个新的 GSON 实例?我了解到 Gson 不是单例,并且可以使用 GsonBuilder 进行一些自定义,但这不是我的情况。我担心共享 Gson 对象的多线程行为。
查看完整描述

1 回答

?
神不在的星期二

TA贡献1963条经验 获得超6个赞

简单的回答:Gson是线程安全的,你可以在 servlet 之间共享它。请参阅:将 Gson 实例用作模型 bean 中的静态字段是否可以(重用)?

但是您应该将JSON序列化/反序列化逻辑与您的业务逻辑分离。例如,在Spring中是由*HttpMessageConverter层完成的。因此,第一步是创建Gson对象的共享 bean,第二步是创建抽象层,允许在需要时交换实现。如果你web-app无论如何都在写作,Spring是一个不错的选择。


查看完整回答
反对 回复 2022-12-21
  • 1 回答
  • 0 关注
  • 77 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信