Должен ли я создавать экземпляр общего объекта Gson для всех вызовов doGet / doPost сервлета? - PullRequest
1 голос
/ 30 мая 2019

В настоящее время я использую класс Google Gson для анализа входящих строк AJax JSON в Java pojos, как часть задач doGet / doPost. Я создаю новый объект Gson, как обычно, из строки JSON обычным способом:

JsonObj jsonObj = new Gson().fromJson(jsonStr, jsonObj.class);

Сомнение заключается в том, что мне следует создавать экземпляр общего объекта gson в инициализации сервлета, чтобы избежать выполнения new Gson() в каждом вызове doGet / doPost сервлета.

Здесь Создавать новый экземпляр GSON для каждой сериализации? Я узнал, что Gson не является синглтоном и что некоторая настройка возможна с GsonBuilder, но это не мой случай. Меня беспокоит многопоточность общего объекта Gson.

1 Ответ

1 голос
/ 30 мая 2019

Простой ответ: Gson является потокобезопасным, и вы можете поделиться им между сервлетами. См .: Можно ли использовать экземпляр Gson в качестве статического поля в компоненте (повторное использование)?

Но вы должны отделить JSON логику сериализации / десериализации от вашей бизнес-логики. Например, в Spring выполняется слой * HttpMessageConverter . Таким образом, первым шагом будет создание общего компонента объекта Gson, а вторым будет создание абстрактного слоя, который позволит обмениваться реализацией, если это необходимо. Если вы все равно пишете web-app, Spring - хороший выбор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...