首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DI或Service :在scala中在运行时注入实现(没有静态绑定)

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

Stack Overflow用户
提问于 2017-02-09 21:16:30
回答 3查看 185关注 0票数 2

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

在过去的几天里,我一直试图找到一个java/scala框架或库,它为我做了以下工作:

  1. 标识类路径上接口/特性的实现
  2. 在标记的站点上实例化并注入所述实现(重要功能:所有实现),最好带有注释。
  3. 以上情况不可能发生在编译器中,因为我需要一个插件体系结构,在这里直到JVM启动才会引入插件。
  4. 因此,上述情况可以在JVM启动时发生(不需要热交换)。

我越来越倾向于OSGi DS,我非常喜欢它,但我认为这是由于#4而造成的过度消耗。

我看了guice,焊缝,标量和金丝,并没有立即看到一个简单的方法来做到这一点。我的目标是让“插件”作者不必以任何方式知道我的注入/IoC解决方案,除了我愿意处理更丑陋的事情的注解(最好是JSR330 )之外。:-)

我必须在这里提交我自己的解决方案,使用OSGi,还是在上面提到的库中遗漏了一些琐碎的东西?

ps:我试图避开OSGi,主要是因为它与我正在使用的应用程序框架的交互(akka -不确定bundle/DS生命周期与单个参与者系统混合得很好)

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-04-14 10:21:28

如果你能负担得起的话,最好(不仅对你,而且对整个生态系统)采纳彼得的建议。

不过,从实用的角度讲,Java有OOTB提供的SPI,在您的特定情况下,它可能是最简单的方法。

票数 1
EN

Stack Overflow用户

发布于 2017-02-10 12:10:58

我现在看一下Scaldi提供了哪些功能。我发现它已经足够成熟了。因此,不难使用这个DI库来实现您的目标。例如,您只能实现在某些配置文件或任何其他文件中搜索特定注释/指定的代码。

票数 1
EN

Stack Overflow用户

发布于 2017-04-14 06:40:09

如果您喜欢DS (而且它似乎非常适合您的问题),那么为什么不解决Akka的任何问题呢?我很肯定其他人会愿意帮忙,因为这看起来是一个有趣的组合。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42147028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档