SpringBoot使用PropertiesLauncher加载外部jar包

 更新时间:2023年07月31日 10:56:07   作者:brucelwl  
这篇文章主要介绍了SpringBoot使用PropertiesLauncher加载外部jar包,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

启用SpringBoot的PropertiesLauncher

使用SpringBoot的PropertiesLauncher可以优先加载外部的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启动类执行

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版本中的实现类, 这个符合预期

在这里插入图片描述

访问资源文件

访问资源文件, 会发现本应只从2.0.0版本中加载文件, 结果1.0.0版本中的也被加载了

在这里插入图片描述

到此这篇关于SpringBoot使用PropertiesLauncher加载外部jar包的文章就介绍到这了,更多相关SpringBoot加载外部jar包内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java和Ceylon对象的构造和验证

    Java和Ceylon对象的构造和验证

    这篇文章主要为大家详细介绍了Java和Ceylon对象的构造和验证,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • 区块链java代码实现

    区块链java代码实现

    这篇文章主要为大家详细介绍了区块链java代码实现,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • Spring整合CXF webservice restful实例详解

    Spring整合CXF webservice restful实例详解

    这篇文章主要为大家详细介绍了Spring整合CXF webservice restful的实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • Springboot如何配置yml文件与映射到java类

    Springboot如何配置yml文件与映射到java类

    这篇文章主要介绍了Springboot如何配置yml文件与映射到java类问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • 关于Struts2的类型转换详解

    关于Struts2的类型转换详解

    本篇文章,小编将为大家介绍关于Struts2的类型转换详解,有需要的朋友可以参考一下
    2013-04-04
  • Java中关键字final finally finalize的区别介绍

    Java中关键字final finally finalize的区别介绍

    这篇文章主要给大家分享的是 Java中final,finally,finalize 到底有什么区别,文章围绕final,finally,finalize的相关资料展开详细内容,具有一定的参考的价值,需要的朋友可以参考一下
    2022-04-04
  • 使用mybatisPlus生成oracle自增序列遇到的坑及解决

    使用mybatisPlus生成oracle自增序列遇到的坑及解决

    这篇文章主要介绍了使用mybatisPlus生成oracle自增序列遇到的坑及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • 使用java对一副扑克牌建模

    使用java对一副扑克牌建模

    这篇文章主要为大家详细介绍了如何使用java对一副扑克牌建模,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-04-04
  • java读取图片并显示方式

    java读取图片并显示方式

    这篇文章主要介绍了java读取图片并显示方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • Spring框架七大模块简单介绍

    Spring框架七大模块简单介绍

    这篇文章主要介绍了Spring框架七大模块简单介绍,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11

最新评论