我正在使用一个系统在其中创建SpringBoot微服务。该微服务将通过SystemAdapter接口(interface)与外部系统通信。我们正在创建一个API,供人们构建自己的系统适配器。我正在寻找一种启动微服务的方法-在classPath中传递一个jar,并使其使用SystemAdapater的实现,而不是嵌入式jar中的默认实现。

使用Gradle和bootJarSpringBoot任务可以直接做到这一点吗?

我尝试采用的一种方法是:

bootJar {
    exclude '**/adapters/**'
}

task saJar(type: Jar) {
    from sourceSets.main.output
    include '**/adapters/**'
    baseName 'SA'
}

bootJar.dependsOn(saJar)

我尝试写出2个不同的Jars,但无法
java -cp SA.jar -jar microService.jar实际工作

感谢您提供的任何帮助。

最佳答案

看一下Spring Boot属性启动器,它将允许您干净地加载外部SystemAdapter实现。
启用PropertiesLauncher:
1.在主应用程序中,将应用程序布局设置为ZIP


实现包中的

  • 将布局设置为MODULE


  • 添加以下cli arg以指向外部jar所在的文件夹。



  • 那是用于加载实现的,您可以将其与spring boot的ServiceLoader(或简称为jdk服务加载器)耦合,以注册SystemAdaptery实现实例并管理其调用。

    10-06 06:44