2017-01-25 78 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相关的代码,但配置文件内容在运行时才可用。因此,您需要将配置文件的内容传递给模块(在运行时),并为每个配置文件条目编写一个提供程序,以查找所述内容中的条目。 –