java~通过springloaded实现热部署

之前写过使用自定义的classLoader进行动态加载,热部署;它有很多弊端,我总结一下:

  1. 当前项目不能引用第三方包
  2. 当前项目必须使用反射的方式调用第三方包的方法
  3. 写死的一些路径

springloaded

源码:https://github.com/spring-projects/spring-loaded
功能:实现java项目的依赖包的热更新

研究了一天,终于研究出了成功了,国内也有不少这方面的文章,但也有一些坑,所以我总结一下:

实现方式

a-start-hot-dependency里有一个类


public class HelloImpl implements Hello {
    @Override
    public String password() {
        return "hello 牛";
    }
}

添加项目依赖

   <dependency>
            <groupId>com.lind</groupId>
            <artifactId>a-start-hot-dependency</artifactId>
            <version>1.0.0</version>
   </dependency>

依赖也里方法调用

  @GetMapping("auto")
    public ResponseEntity auto() {
        return ResponseEntity.ok(new HelloImpl().password());
    }

部署方式

  1. 复制三个包到发布的目录springloaded-1.2.5.RELEASE.jar,a-start-hot-deploy-1.0.0.jar,a-start-hot-dependency-1.0.0.jar
  2. 使用java命令进行部署java -noverify -javaagent:D:/springloaded-1.2.5.RELEASE.jar -Dspringloaded="watchJars=a-start-hot-dependency-1.0.0.jar" -jar a-start-hot-deploy-1.0.0.jar
  3. 当前a-start-hot-dependency-1.0.0.ja有更新时,可以看到控制台的变化

看了很多文章,写的命令都有问题,最后还是机缘巧合的成功了!

(0)

相关推荐

  • 『Spring Boot 2.4新特性』减少95%内存占用

    节省 95%的内存占用,减少 80%的启动耗时. GraalVM 是一种高性能的虚拟机,它可以显著的提高程序的性能和运行效率,非常适合微服务.最近比较火的 Java 框架 Quarkus 默认支持 G ...

  • springboot如何实现热部署

    第一步: 1)pom中加依赖 <dependencies> <dependency> <groupId>org.springframework.boot</g ...

  • SpringBoot热部署配置

    背景: 因为开发过程中会遇到进场的调试程序代码,进行小部分的修改,但是每次都要自己进行重新启动项目,太麻烦,这里就可以用到SpringBoot自带的热部署机制进行相关的配置,和我之前使用的Go框架Be ...

  • 5种SpringBoot热部署方式,你用哪种?

    Spring Boot 中 5 种热部署方式如下:   1.模板热部署   2.使用调试模式Debug实现热部署   3.spring-boot-devtools   4.Spring Loaded ...

  • JAVA项目从运维部署到项目开发(三.Redis)

    一.Redis的介绍 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.它通常被称为数据结构服务器,因为值(va ...

  • K8S实战之部署java应用

    kubernetes基本概念 Pod: 1.最小的部署单元, 2.一组容器的集合 3.一个pod中的容器共享网络命名空间 4.生命周期是短暂的 Controllers: 1.Deployment:部署 ...

  • Java部署命令

    //luixus运行 nohup java -Xms1024M -Xmx1024M -Dfile.encoding=utf-8 -jar medicare.jar >temp-medicare. ...

  • CentOS7下部署java+tomcat+mysql项目及遇到的坑

    CentOS 7 下安装部署java+tomcat+mysql 前置:CentOS7安装:https://jingyan.baidu.com/article/b7001fe1d1d8380e7382d ...

  • 知乎热评:你做 Java 程序员真的是因为热爱吗?

    知乎热评话题:你做程序员真的是因为热爱吗?问题详细描述是这样的: java开发程序猿,最近有些迷茫.毕业快一年了,实习+工作在现在的公司近两年.没有当初刚开始工作时那么热情了,想要去提升但是静不下心去 ...

  • 放五指血,除五脏热,中医就是这么神奇,建...

    放五指血,除五脏热,中医就是这么神奇,建议收藏~~~ 1.除肺热--放血--大拇指 2.除肠热--放血--食指 3.除心热--放血--中指 4.除肝热--放血--无名指 5.除虚热--放血--小拇指 ...