Java依赖注入和目标构建

时间:2017-02-08 12:44:23

标签: java maven dependency-injection build dagger-2

我目前正在开发一个Java 8项目(不允许使用大型框架,与Android应用程序的环境非常相似,只是为了在嵌入式环境中使用),这在目标版本方面非常不灵活。因此,我通常会探索通过依赖注入来为不同的构建环境编译时绑定不同实现的可能性。

可能最简单的例子是同一个类的两个实现,一个与调试日志测试环境相关,另一个与没有它的生产环境相关,其中通过依赖注入(最好使用Dagger 2)我可以构建项目相对于构建环境自动注入一个实现或另一个实现。

我们的想法是拥有干净的生产代码,并且仍然可以获取一个让我们说的子实现,以便测试人员/开发人员可以在需要时看到调试日志记录,并且只注入例如父/其他实现在编译生产代码时,接口(没有调试代码)。这将允许我们共享相同的代码库,并且仍然不会使用不相关的代码污染生产代码,这只会降低运行时的性能并且通常会增加应用程序大小和代码复杂性。我目前在Dagger 2,Java 8 SE&一个多项目/模块maven构建(可能会移动到Gradle项目,但如果可能的话,希望尽可能减少更改)。

我在想:

  • 一般解决方案的想法是否良好&有更好的方法吗?
  • 这可以通过JSR-330(javax.inject)annotations / Dagger 2以及可能的java.lang.annotation.ElementType或custom / named / scoped注释来实现吗?有没有更好的方法呢?
  • 如果可能的话 - 我如何将maven poms中定义的不同构建目标与java类中的注释相关联,并最终根据当前环境设置和注释使用Dagger 2在编译时注入正确的类在父母和子女的实施中?

非常感谢所有人提前,希望答案能够帮助其他人,因为我认为在处理大型项目时这应该是一个常见问题,因为人们希望尽可能在编译的生产应用程序中拥有干净且性能友好的代码。

0 个答案:

没有答案