2017-01-25 32 views
0

在這裏需要一些幫助。我想知道是否有可能使谷歌匕首2與外部配置文件如yml或xml文件工作?我正在使用dagger 2和sparkjava來構建一個REST API服務,因此我需要一種方法來配置嵌入式jetty的端口。谷歌匕首2與外部配置

回答

0

是的,這是可能的。您需要自己完成繁重的任務,將外部配置文件中的數據轉換爲可以使用的內部表單,然後在運行時將該表單提供給匕首。

我剛纔問了一個類似的問題,並得到了一個很好的答案。本質上你需要

  • 以適當的內部形式讀取配置文件。 Map<String, String>是個不錯的選擇。
  • 在調用build()方法之前,必須在運行時將該映射提供給模塊。 Dagger幫助自動生成的代碼。
  • 對於每個配置條目,您需要編寫一個在提供的地圖中查找的@Provides方法。是的,每個。沒有捷徑。

我們已經在最近的一個項目中完成了這項工作。很多樣板,但在工作時很好。

有關更多詳細信息,請參閱https://stackoverflow.com/a/18105271/53897的答案。

+0

爲什麼在運行時?不是匕首2在編譯時生成所有代碼? – Divers

+0

@Divers是的,但您必須處理代碼中尚未提供的數據。您必須在編譯時編寫所有與Dagger相關的代碼,但配置文件內容在運行時纔可用。因此,您需要將配置文件的內容傳遞給模塊(在運行時),併爲每個配置文件條目編寫一個提供程序,以查找所述內容中的條目。 –