spring 热加载外部jar包

想法是,将外部的spring工程jar包在spring启动之后可以热加载进spring容器。遗憾的是到现在为止没有实现。

目前尝试的几种思路:
1、自定义classloader–>加载jar包进JVM–>修改spring的classloader,自定义classloader,ext-classloader的父子关系->将jar包使用注解扫描进入spring->refresh(这步失败了,报java.lang.IllegalStateException: GenericApplicationContext does not support multiple refresh attempts: just call ‘refresh’ once)
classloader父子关系的设定貌似也有问题
2、自定义classloader–>加载jar包进JVM–>遍历所有的class并将其加入spring–>调用
(以上都是成功的,但加入spring时可能会破坏spring的规则导致错误,而且载入的mybatis也需要处理)

参考:
http://sheungxin.iteye.com/blog/2352833
https://blog.csdn.net/chjttony/article/details/6301523

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Spring Boot中实现外部jar,可以通过以下步骤进行操作: 1. 首先在pom.xml文件中添spring-boot-devtools依赖,如下所示: ``` <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> <scope>runtime</scope> </dependency> ``` 该依赖主要用于开发环境下的功能。 2. 然后,在application.properties文件中添以下配置: ``` spring.devtools.restart.enabled=true ``` 该配置表示启用功能。 3. 接下来,在IDE中启动Spring Boot应用程序。当修改了外部jar时,IDE会自动检测到变化并重新应用程序。可以通过快捷键Ctrl + F9手动触发重新。 4. 此外,还可以在IDE的设置中进行配置,以确保外部jar的修改能够被自动检测到。例如,在IntelliJ IDEA中,可以通过以下步骤进行设置: - 进入Preferences/Settings窗口,找到Build, Execution, Deployment - Compiler - 在右侧的Additional build process VM options中添以下参数: ``` -Dspring.devtools.restart.additional-paths=/path/to/external/jar ``` 这样,IDE会监视指定路径下的外部jar的变化,并自动触发。 总结起来,实现Spring Boot的外部jar的步骤主要括添相关依赖、配置启用功能,并在IDE中进行相应的设置。这样,当外部jar发生变化时,应用程序会自动重新,从而提高开发效率。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值