2017-01-25 17 views
0

нужна помощь здесь. Мне интересно, возможно ли сделать кинг-сайз google 2 с внешними файлами конфигурации, такими как yml или xml-файлы? Я работаю с кинжалом 2 и sparkjava для создания службы REST API, поэтому мне нужен способ настройки портов для встроенного причала.Google Dagger 2 с внешней конфигурацией

ответ

0

Да, это возможно. Вам нужно будет сделать тяжелый подъем, извлекая данные из внешних файлов конфигурации во внутреннюю форму, которую вы можете использовать, а затем предоставите эту форму кинжалу во время выполнения.

Я задал подобный вопрос некоторое время назад и получил хороший ответ. По существу вам необходимо

  • Прочтите в файлах конфигурации подходящую внутреннюю форму. Map<String, String> - хороший выбор.
  • Вы должны предоставить карту модулю во время выполнения до вызова метода build(). Кинжал помогает с автогенерированным кодом.
  • Для записи каждой записи конфигурации вам необходимо написать метод @Provides, который просматривается на карте. Да, каждый. Нет коротких сокращений.

Мы сделали это в недавнем проекте. Много шаблонов, но работает очень хорошо, когда на месте.

Для получения более подробной информации см. Ответ на вопрос https://stackoverflow.com/a/18105271/53897.

+0

Почему во время выполнения? Разве кинжал 2 не генерирует весь код во время компиляции? – Divers

+0

@ Дайверы Да, но вам приходится иметь дело с данными, которые еще не доступны в вашем коде. Вы должны написать весь код, связанный с кинжалом, во время компиляции, но содержимое файла конфигурации недоступно до выполнения. Поэтому вам нужно передать содержимое конфигурационного файла в модуль (во время выполнения) и написать провайдер для каждой записи файла конфигурации, которая просматривает запись в указанном содержимом. –