У меня есть две реализации CodecRegistry для набора классов дел.Большинство из них созданы с помощью макросов.Теперь, если я использую только RegistryOne
, он работает для набора "Один" - классы из пакета one
.
object RegistryOne {
lazy val registry: CodecRegistry =
fromRegistries(
fromCodecs(..),
fromProviders(..),
DEFAULT_CODEC_REGISTRY
)
}
object RegistryTwo {
lazy val registry: CodecRegistry =
fromRegistries(
fromCodecs(..),
fromProviders(..),
RegistryOne.registry,
DEFAULT_CODEC_REGISTRY
)
}
Некоторые из классов, реализованных в RegistryTwo
, зависят от пакета one
,Поэтому я просто включил RegistryOne
в него.Теперь вся сериализация по-прежнему работает с RegistryTwo.registry
для набора «Один».Но для классов пакета two
я получаю исключения времени выполнения "Не могу найти кодек для класса scala.Option".Похоже, DEFAULT_CODEC_REGISTRY
не входит в приведенный реестр?!
У меня также RegistryThree
и RegistryFour
.По крайней мере, для ясности и для будущих рефакторингов я бы держал их отдельно.
Как правильно объединить реестры кодеков?