我有一个 Java 项目,需要向其注册外部模块。这些模块:
- 在主项目中实现一个特定的接口(interface)
- 被打包到一个 uni-jar 中(连同任何依赖项)
- 包含一些人类可读的元信息(如模块名称)。
我的主项目需要能够在运行时加载(例如使用它自己的类加载器)这些外部模块中的任何一个。我的问题是:将这些模块注册到主项目的最佳方式是什么(我更愿意保留这个普通的 Java,而不是为这个孤立的问题使用任何第三方框架/库)?
我目前的解决方案是在主项目中保留一个 .properties 文件,key=name,value=class |delimiter|人类可读名称(或协调两个 .properties 文件以避免分隔符解析)。在运行时,主项目加载 .properties 文件并使用它找到的任何条目来驱动类加载器。
这让我觉得很虚伪。有更好的方法吗?
最佳答案
Java 中的标准方法是定义一个 Service Provider .
关于java - 在 Java 项目中引用外部模块的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2804576/