SpringBoot使用PropertiesLauncher加載外部jar包
啟用SpringBoot的PropertiesLauncher
使用SpringBoot的PropertiesLauncher可以優(yōu)先加載外部的jar文件, 這樣可以在程序運行前替換jar包,
官方文檔: Launching Executable Jars
使用演示
建立一個SpringBoot工程, 工程中依賴一個叫自定義的utils包, 版本是1.0.0, 通過http接口返回utils版本, 正常打包后訪問, 返回1.0.0版本
@Slf4j
@RestController
public class HelloController {
@RequestMapping("/version")
public String version() {
String version = VersionUtil.getVersion();
log.info("請求version: " + version);
return VersionUtil.getVersion();
}
@RequestMapping("spi-version")
public Object spiVersion() {
ArrayList<String> objects = new ArrayList<>();
ServiceLoader<AgentInterface> load = ServiceLoader.load(AgentInterface.class);
for (AgentInterface registry : load) {
objects.add(registry.hello());
}
return objects;
}
@RequestMapping("/spring-res")
public Object springRes() throws IOException {
ArrayList<String> objects = new ArrayList<>();
PathMatchingResourcePatternResolver pathMatchingResourcePatternResolver = new PathMatchingResourcePatternResolver();
Resource[] resources = pathMatchingResourcePatternResolver.getResources("classpath*:META-INF/services/com.example.utils.AgentInterface");
for (Resource resource : resources) {
objects.add(resource.toString());
}
return objects;
}
}2.在啟用應用程序時通過-Dloader.path=/libs指定外部jar的目錄, 再啟動, 訪問接口返回2.0.0版本, 說明包替換成功
指定PropertiesLauncher啟動類執(zhí)行
java -cp demo1-0.0.1-SNAPSHOT.jar org.springframework.boot.loader.PropertiesLauncher

java -cp demo1-0.0.1-SNAPSHOT.jar -Dloader.path=/Users/admin/.m2/repository/com/example/utils/2.0.0/ org.springframework.boot.loader.PropertiesLauncher

訪問java spi
可以正常只加載2.0.0版本中的實現(xiàn)類, 這個符合預期

訪問資源文件
訪問資源文件, 會發(fā)現(xiàn)本應只從2.0.0版本中加載文件, 結果1.0.0版本中的也被加載了

到此這篇關于SpringBoot使用PropertiesLauncher加載外部jar包的文章就介紹到這了,更多相關SpringBoot加載外部jar包內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
MAC配置java+jmeter環(huán)境變量過程解析
這篇文章主要介紹了MAC配置java+jmeter環(huán)境變量過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-09-09
解決SpringMVC @RequestMapping不設置value出現(xiàn)的問題
這篇文章主要介紹了解決SpringMVC @RequestMapping不設置value出現(xiàn)的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08
SpringBoot集成分頁插件PageHelper的配置和使用過程
這篇文章主要介紹了SpringBoot集成分頁插件PageHelper的配置和使用過程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-04-04

