pureconfig нет ручного импорта pureconfig.generic.auto._ - PullRequest
0 голосов
/ 28 февраля 2019

Последние обновления pureconfig в серии 0.10.* отключили автоматическую настройку по умолчанию.

import pureconfig.generic.auto._

необходимо импортировать вручную.Но у меня есть иерархия классов, где я не хочу импортировать ее каждый раз для дочернего класса.

import pureconfig.ConfigReader
abstract class SparkBaseRunner[T <: Product](implicit A: ConfigReader[T])extends App {}

уже ожидает configReader.При использовании этого базового класса:

object MyOperation extends SparkBaseRunner[MyCaseClass] {}

происходит сбой с:

could not find implicit value for parameter A: pureconfig.ConfigReader[foo.bar.my.Type]

, если только вышеупомянутые входные данные не указаны вручную для каждого дочернего класса.Есть ли способ избежать этого дублирования кода?Попытка указать входные данные в абстрактном базовом классе не сработала для меня, так как для этого уже требуется объект ConfigReader.

edit

Попытка вручную получить доступ к считывателю конфигурации внутри базового класса.не удается:

implicit val configReader = deriveReader[T]
could not find implicit value for parameter A: pureconfig.ConfigReader[T]
could not find Lazy implicit value of type pureconfig.generic.DerivedConfigReader[T]

Моя версия Scala: 2.11.12

1 Ответ

0 голосов
/ 28 мая 2019

Я считаю, что конфигурация уже читается как одна операция, и есть несколько приложений, все из которых выполняют следующее:

object Ops extends SparkBaseRunner[MyCaseClass]

Я не вижу способа избежать дублирования, так как базакласс не может вывести конфигурацию, поскольку все, что у него есть, это общий тип T.

. Лучшее решение - не беспокоиться об этом и использовать auto._.

import pureconfig.generic.auto._
.
...