我会说 OSGi 是你应该考虑的东西。我没有该领域的专业知识,但您可以在 stackoverflow 和其他在线资源中找到示例和说明。
What does OSGi solve?
Trouble understanding the whole OSGi web eco system
Introduction to OSGi 教程使用了Apache Felix 和Apache Karaf,并提供了一个看似简单的关于创建服务包的教程。来自教程:
Open Service Gateway Initiative 是定义基于 Java 的组件系统的规范。它目前由 OSGi 联盟管理,它的第一个版本可以追溯到 1999 年。从那时起,它被证明是组件系统的一个很好的标准,并且现在被广泛使用。例如,Eclipse IDE 是一个基于 OSGi 的应用程序。
一个看似更复杂的教程可能是OSGi Modularity - Tutorial
ServiceLoader 提供A simple service-provider loading facility.,但看起来可以根据您的需要进行简化。它适用于spring-boot,但似乎不适用于企业应用程序。一个简单的例子是这样的:
您的应用程序的Framework:
public class FrameworkClass {
public static void main(String[] args) {
new FrameworkClass().run();
}
private void run() {
ServiceLoader<IFrameworkModule> modules = ServiceLoader.load(IFrameworkModule.class);
modules.forEach(IFrameworkModule::initialize);
modules.forEach(IFrameworkModule::execute);
}
}
服务模块实现的接口:
public interface IFrameworkModule {
public void initialize();
public void execute();
}
一个模块 - 在一个单独的 jar 中 - 用于应用程序
public class Module1 implements IFrameworkModule {
@Override
public void initialize() {
System.out.println("initialize module1");
}
@Override
public void execute() {
System.out.println("execute module1");
}
}
需要META-INF/services 文件夹中的framework.IFrameworkModule 文件
fmodule.Module1
但考虑到您的应用程序的复杂性,我认为使用 OSGi 更有意义。