• 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有更新时,可以看到控制台的变化
      依赖包被更新后的事件图

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

  • 相关阅读:
    关于程序收到消息的顺序
    窗口过程
    消息循环
    解剖窗口程序
    开始了解窗口程序
    编码的规范
    汇编的除法和乘法
    Win32汇编--Win32汇编的高级语法
    H5-音频列表音乐切换
    移动端-ibokan
  • 原文地址:https://www.cnblogs.com/lori/p/14031102.html
Copyright © 2020-2023  润新知