2011-12-13 3 views
4

Я использую gson в нескольких местах в моем коде, и кажется, что каждый раз, когда мне нужно зарегистрировать адаптеры типа, которые я использую, например, так:Как глобально регистрировать типы адаптеров на Gson?

GsonBuilder gsonBuilder = new GsonBuilder(); 
gsonBuilder.registerTypeAdapter(TypeA.class, new TypeAAdapter()); 
gsonBuilder.registerTypeAdapter(TypeB.class, new TypeBAdapter()); 
Gson gson = gsonBuilder.create(); 

Теперь я могу обернуть этот код в функции полезности , или я могу создать singleton gsonBuilder (это потокобезопасно?), но мне кажется странным, что этот общий шаблон использования не упоминается в документации.

Есть ли какой-то предпочтительный метод для установки типа-и-забытых типов адаптеров на gson, так что мне нужно будет только беспокоиться о них в одном месте в моем коде?

ответ

1

Gson, по-видимому, представляет собой класс, защищенный потоками. Функциональный тест, обеспечивающий безопасность потока, можно найти в source code.

Таким образом, вы можете вводить экземпляр Gson в свои классы в качестве зависимости, если вы используете инфраструктуру инъекции зависимостей.

0

регистре TypeAdapterFactory в grails-app/conf/spring/resources.groovy:

beans { 
     localDateAdapterFactory(LocalDateAdapterFactory) 
     }