нужна помощь здесь. Мне интересно, возможно ли сделать кинг-сайз google 2 с внешними файлами конфигурации, такими как yml или xml-файлы? Я работаю с кинжалом 2 и sparkjava для создания службы REST API, поэтому мне нужен способ настройки портов для встроенного причала.Google Dagger 2 с внешней конфигурацией
0
A
ответ
0
Да, это возможно. Вам нужно будет сделать тяжелый подъем, извлекая данные из внешних файлов конфигурации во внутреннюю форму, которую вы можете использовать, а затем предоставите эту форму кинжалу во время выполнения.
Я задал подобный вопрос некоторое время назад и получил хороший ответ. По существу вам необходимо
- Прочтите в файлах конфигурации подходящую внутреннюю форму.
Map<String, String>
- хороший выбор. - Вы должны предоставить карту модулю во время выполнения до вызова метода
build()
. Кинжал помогает с автогенерированным кодом. - Для записи каждой записи конфигурации вам необходимо написать метод
@Provides
, который просматривается на карте. Да, каждый. Нет коротких сокращений.
Мы сделали это в недавнем проекте. Много шаблонов, но работает очень хорошо, когда на месте.
Для получения более подробной информации см. Ответ на вопрос https://stackoverflow.com/a/18105271/53897.
Почему во время выполнения? Разве кинжал 2 не генерирует весь код во время компиляции? – Divers
@ Дайверы Да, но вам приходится иметь дело с данными, которые еще не доступны в вашем коде. Вы должны написать весь код, связанный с кинжалом, во время компиляции, но содержимое файла конфигурации недоступно до выполнения. Поэтому вам нужно передать содержимое конфигурационного файла в модуль (во время выполнения) и написать провайдер для каждой записи файла конфигурации, которая просматривает запись в указанном содержимом. –