java在spring boot中加载外部JAR
我们如何在运行时加载额外的jar和引导jar
主jar:Main
。罐子
附加jar:Support
。罐子
Main
项目是一个gradle引导项目
Support
项目不是gradle项目,但被赋予了对所需JAR的编译时依赖性
支持项目内容:
@RestController
@RequestMapping("/test")
public class CustomService implements WebMvcConfigurer {
@RequestMapping(value = "/hello", method = RequestMethod.GET)
public @ResponseBody String get() {
return "Done!!";
}
}
我尝试的是:
java -cp Support.jar:Main.jar -Dloader.path=Support.jar -Xbootclasspath/p:alpn-boot-8.1.11.v20170118.jar -Dloader.main=com.abc.app.MyApplication org.springframework.boot.loader.PropertiesLauncher
启动正常,但端点未注册
注: 我提到了注释扫描
@SpringBootApplication
@ComponentScan("com.abc")
public class MyApplication {
....
}
也是主要原因。jar将由不同的用户从不同的地方运行。每个用户都可以提供自己版本的支持。罐子因此,将依赖项硬编码到主项目的gradle文件中是不可行的
# 1 楼答案
尝试将
@ComponentScan(basePackages=full.name.of.customservice.package
添加到spring应用程序配置中,或者使CustomService
与@SpringApplication
类的包相同