DI或Service Locator:在运行时在scala中注入实现(无静态绑定)

gn

我有一个用例,其中我想提供一个简单的API来扩展我的Scala应用程序的功能。

我花了最后两天的时间来寻找一个能为我做以下事情的java / scala DI框架或库:

  1. 标识类路径上接口/特征的实现
  2. 在标记的站点上实例化并注入所述实现(重要功能:全部),最好带有注释
  3. 上面的事情不可能在编译器中发生,因为我需要一个插件架构,在JVM启动之前不引入插件
  4. 因此,以上情况可在JVM启动时发生(无需热插拔)

我越来越喜欢OSGi DS,我非常喜欢OSGi DS,但由于#4,我认为它太过分了。

我看着guice,weld,scaladi和macwire,却无法立即看到执行此操作的简单方法。我的目标是使“插件”作者不必以任何方式了解我的注入/ IoC解决方案,除了偶尔的Annotation(最好是JSR330),我愿意在注入站点处理较丑的事情。:-)

我是否需要在这里推出自己的解决方案,使用OSGi,还是在上述库中缺少一些琐碎的内容?

ps:我之所以试图避开OSGi,主要是因为它与我正在使用的应用程序框架进行了交互(akka-不确定bundle / DS生命周期是否与单个actor系统很好地融合)

米伦·迪扬科夫(Milen Dyankov)

如果您能负担得起,那么(最好是对您来说,对整个生态系统而言)最好与Peter的建议相吻合。

从实用的角度来讲,Java具有OOTB附带的SPI,对于您的特定情况,它可能是最简单的方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章