在Java项目中引用外部模块的最佳实践
我有一个Java项目,它期望外部模块注册到它。这些模块:在Java项目中引用外部模块的最佳实践,java,module,project,Java,Module,Project,我有一个Java项目,它期望外部模块注册到它。这些模块: 在主项目中实现特定接口 打包到uni jar中(以及任何依赖项) 包含一些人类可读的元信息(如模块名称) 我的主要项目需要能够在运行时加载(例如,使用自己的类加载器)这些外部模块中的任何一个。我的问题是:在主项目中注册这些模块的最佳方式是什么(我更喜欢使用普通Java,而不使用任何第三方框架/库来解决这个孤立的问题) 我目前的解决方案是在主项目中保留一个.properties文件,其中key=name,value=class | de
- 在主项目中实现特定接口
- 打包到uni jar中(以及任何依赖项)
- 包含一些人类可读的元信息(如模块名称)
这对我来说很重要。有更好的方法吗 让所有模块通过一个标准xml文件来表达它们的元数据。称之为“my module data.xml” 在主容器启动时,它会查找类路径*:my module data.xml“(可以有一个FrontController类),并委托给各个模块FrontController类来执行它想要的任何操作:)
此外,google for Spring OSGI及其doco在这里也会有所帮助。Java中的标准方法是定义一个。在@ZZ编码器上扩展 JDK内部使用的上述服务提供者模式在JDK 6中有了更正式的定义 底层基础设施是相同的。也就是说,两个API使用相同的工件,方式相同。NetBeans版本只是一个更灵活、更健壮的API(例如,允许替代查找服务以及默认服务) 当然,如果不提及EJB、Spring和OSGi的主流、更为“重量级”的标准,那将是失职的