繁体   English   中英

还有什么可以在Java中用作ServiceLoader替代方案?

[英]What else can be used in Java as the ServiceLoader alternative?

我正在寻找类似ServiceLoader的东西,但它不依赖于SPI文件,其中应枚举所有服务实现,然后将其添加到某个类加载器的路径中,以便找到它。

假设有一个应用程序,它具有接口和服务的一些实现。 可以使用什么框架,允许您向应用程序添加新的JAR,其中包含一些新的实现,并且它们可以自动添加到该应用程序内所有类加载器的类路径中? 所有类加载器在这里都非常重要,因为如果这是一个NetBeans模块应用程序,那么NetBeans平台就会产生奇怪的魔力并且您永远不知道哪个类加载器被哪个线程使用,哪个类路径等...它也会很棒,如果不需要重新启动应用程序来查找新的JAR,但这不是一个重要的要求。

我已经听说过OSGi,但这看起来太大了,我只需要1%的功能。

谢谢你的任何建议!

最简单的解决方案是使用JSPF

更多的“企业”可能是使用OSGi ......但在这种情况下,你将不得不看一下iPOJO ,作为一个例子。 对不起,我终于重新阅读了你的留言。 我认为,与你所说的相反,OSGi正是为了满足你的需求,因为它精确地允许服务加载和动态布线。

IoC容器可以通过一些扩展提供这种功能(我认为至少可以使用Guice扩展)。

似乎您正在寻找Netbeans Lookup API - Link

一个较新的选择(这是一个老问题)可能是sezpoz

它与JDK ServiceLoader非常相似,它使用META-INF资源查找,但资源是由注释处理器自动创建的。 因此,它的注释很重,并且通常以后期处理为代价更安全。 它由Hudson / Jenkins使用。

我相信Kohsuke是第一个提出这个注释处理理念的人: http//metainf-services.kohsuke.org/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM