1

我们有一个系统,我们想在一个单独的 jar 中使用我们的接口实现。场景是客户使用我们的工作并提供他们自己的实现来覆盖默认实现。

问题是将实际实现类绑定/连接到我们的系统中的最佳方法是什么?

一种方法是让弹簧连接依赖项。它目前不是一个选项,因为所有客户端都没有使用 spring。

研究了一些选项,例如使用反射解析接口实现类。对这个解决方案不太满意。

另一个不错的旧选项是在其中一个属性中配置类名并让客户端配置它。这看起来不错的样子。

但是如果可以的话,想找到一些优雅的选择。

还有任何想法 SLF4J / EL 如何自动解决它们的实现?

4

2 回答 2

1

我建议您使用SPI (Service Provider Interface)。它需要创建枚举特定服务的所有可用实现的文件。这可能很烦人。幸运的是,您可以使用这个为您工作的开源库:http ://code.google.com/p/spi/

于 2012-08-30T15:43:51.100 回答
0

也许您正在寻找Reflections库。

Reflections 扫描您的类路径,索引元数据,允许您在运行时查询它,并且可以为项目中的许多模块保存和收集该信息。

使用反射,您可以查询元数据,例如:

  • 获取某种类型的所有子类型
  • 获取所有带有一些注释的类型/方法/字段,没有注释参数匹配
  • 获取匹配正则表达式的所有资源
于 2012-08-30T16:23:29.480 回答