【发布时间】:2017-06-28 01:44:11
【问题描述】:
我有一个用例,我想提供一个简单的 API 来扩展我的 scala 应用程序的功能。
过去几天我一直在寻找一个 java/scala DI 框架或库来为我执行以下操作:
- 标识类路径上的接口/特征的实现
- 在标记的站点上实例化并注入所述实现(重要特性:全部),最好带有注释
- 在编译器中不能发生上述情况,因为我需要一个插件架构,在 JVM 启动之前不会引入插件
- 因此上述情况可能在 JVM 启动时发生(无需热插拔)
我越来越倾向于 OSGi DS,我是它的忠实粉丝,但由于 #4,我认为它是一种矫枉过正。
我查看了 guice、weld、scaladi 和 macwire,但无法立即找到执行此操作的简单方法。我的目标是让“插件”作者不必以任何方式了解我的注入/IoC 解决方案,除了偶尔的注释(最好是 JSR330)在注入站点我愿意处理更丑陋的事情。 :-)
我是否必须在这里推出自己的解决方案,使用 OSGi,还是我在上述库中遗漏了一些琐碎的东西?
ps:我试图避开 OSGi,主要是因为它与我正在使用的应用程序框架交互(akka - 不确定 bundle/DS 生命周期是否与单个参与者系统很好地混合)
【问题讨论】:
-
这就是你想要的——使用 Macwire 的插件github.com/adamw/macwire#accessing-wired-instances-dynamically
标签: scala osgi guice weld macwire