我正在使用一个系统在其中创建SpringBoot微服务。该微服务将通过SystemAdapter
接口(interface)与外部系统通信。我们正在创建一个API,供人们构建自己的系统适配器。我正在寻找一种启动微服务的方法-在classPath中传递一个jar,并使其使用SystemAdapater
的实现,而不是嵌入式jar中的默认实现。
使用Gradle和bootJar
的SpringBoot
任务可以直接做到这一点吗?
我尝试采用的一种方法是:
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
那是用于加载实现的,您可以将其与spring boot的ServiceLoader(或简称为jdk服务加载器)耦合,以注册SystemAdaptery实现实例并管理其调用。