Есть ли рекомендуемый способ внедрения / доступа к экземпляру конфигурации приложения Typesafe из интерфейса службы Lagom (то есть признака, а не Impl)?
Вариант использования, о котором я думаю, - это создание фильтра заголовка запроса, который зависит от настраиваемого значения (например, секрета env), и его внедрение через аргумент конструктора.
final override def descriptor: Descriptor = {
import Service._
named("some-service")
.withCalls(
pathCall("/health", healthCheck),
)
.withHeaderFilter(new CustomerHeaderFilter(config))
}
К сожалению, внутри функции дескриптора нет легко доступной ссылки на config. Я попытался включить как абстрактное поле в службу, но это, похоже, заставляет Lagom взорваться и жаловаться, что поле не создает службу.
Есть ли рекомендуемый способ сделать это, или мне нужно вызвать в ConfigFactory.load()?
Сейчас использую Lagom 1.4.5 + Scala - спасибо!
Если вы вводите секрет, который используется только на стороне обслуживания (фактическая реализация службы lagom, а не клиент, использующий дескриптор службы), я думаю, вам лучше не использовать HeaderFilter Lagom и вместо этого использовать Play webFilters.





Насколько мне известно, сервисы Lagom в настоящее время не поддерживают DI. Однако это должно иметь смысл, поскольку API не должен зависеть от конфигураций - должны зависеть только реализации.