Когда мы посмотрим, как реализованы JacksonEncoder
и JacksonDecoder
, мы заметим, что они создают новые ObjectMapper
в конструкторе:
public JacksonDecoder(Iterable modules) {
this(new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
.registerModules(modules));
}
[1115 ] Выше конструктор вызывается по умолчанию с помощью emptyList()
. Итак, нам нужно предоставить все модули, которые мы хотим использовать вручную.
Для получения максимальной отдачи от Java 8
и Jackson
зарегистрируйте все 3 модуля из jackson-modules-java8 :
private val client = Feign.builder()
.encoder(JacksonEncoder(Arrays.asList(JavaTimeModule(), ...)))
.decoder(JacksonDecoder(Arrays.asList(JavaTimeModule(), ...)))
.target(Client::class.java, host)
РЕДАКТИРОВАТЬ [1113 ]
Ther - конструктор, позволяющий использовать ObjectMapper
экземпляр. Вы можете создать новый экземпляр или добавить его из своего контейнера:
val mapper = ObjectMapper()
mapper.registerModule(ParameterNamesModule())
.registerModule(Jdk8Module())
.registerModule(JavaTimeModule())
// other configuration
val client = Feign.builder()
.encoder(JacksonEncoder(mapper))
.decoder(JacksonDecoder(mapper))
.target(Client::class.java, host)
Существует огромный штраф производительности за использование ENUM
для таких операций as:
Запросить список разрешенных значений в ENUM
, например, для заполнения раскрывающегося меню. Вы должны запросить тип данных из INFORMATION_SCHEMA
и проанализировать список из возвращенного поля BLOB.
Измените набор допустимых значений. Для этого требуется оператор ALTER TABLE
, который блокирует таблицу и может выполнить реструктуризацию.
Я не фанат ENUM MySQL
. Я предпочитаю использовать таблицы поиска. См. Также мой ответ на « Как обрабатывать перечисления без полей перечисления в базе данных? »
ENUM представляются внутренне 1 или 2 байтами, в зависимости от количества значений. Если строки, которые вы храните, имеют длину более 2 байтов и редко меняются, тогда ENUM - это то, что вам нужно. Сравнение будет быстрее с перечислением, и они будут занимать меньше места на диске, что, в свою очередь, может привести к сокращению времени поиска.
Недостатком является то, что перечисления менее гибки, когда дело доходит до добавления / удаления значений.
Нет, см. Сравнение здесь
Преимущество заключается в удобочитаемости кода.