java~通过springloaded实现热部署
之前写过使用自定义的classLoader进行动态加载,热部署;它有很多弊端,我总结一下:
- 当前项目不能引用第三方包
- 当前项目必须使用反射的方式调用第三方包的方法
- 写死的一些路径
springloaded
源码:https://github.com/spring-projects/spring-loaded
功能:实现java项目的依赖包的热更新
研究了一天,终于研究出了成功了,国内也有不少这方面的文章,但也有一些坑,所以我总结一下:
- 源项目 a-start-hot-deploy
- 依赖项目 a-start-hot-dependency
- 工具 springloaded 1.2.5 (https://repo.spring.io/release/org/springframework/springloaded/1.2.5.RELEASE/springloaded-1.2.5.RELEASE.jar)
实现方式
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());
}
部署方式
- 复制三个包到发布的目录springloaded-1.2.5.RELEASE.jar,a-start-hot-deploy-1.0.0.jar,a-start-hot-dependency-1.0.0.jar
- 使用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 - 当前a-start-hot-dependency-1.0.0.ja有更新时,可以看到控制台的变化

看了很多文章,写的命令都有问题,最后还是机缘巧合的成功了!
java~通过springloaded实现热部署的更多相关文章
- 在oaf中集成SpringLoaded实现热部署
首先声明:其实JRebel和Spring-Loaded就是一个开发环境下的利器,skip build and redeploy process,大大提升了工作效率!而非生产环境的利器... 不要在生产 ...
- IntelliJ IDEA 2017版 springloaded实现热部署
1.配置pom.xml文档 <?xml version="1.0" encoding="UTF-8"?> <project xmlns=&qu ...
- Spring Boot学习总结(4)——使用Springloaded进行热部署
我在开发的时候,总是会及时对自己的程序进行测试,总是频繁的重启web server,容器不烦我们都觉得烦了. dependencys目录下增加: <dependency> <grou ...
- 关于Maven打包Java Web项目以及热部署插件Jrebel的使用
Java Web/Eclipse/Maven/Tomcat 最近有个新项目是java web项目,记录一下,可能比较乱.虽然没接触过Java,但是eclipse还是用过的 初识项目 同事说,项目是ma ...
- 使用spring-loaded开源项目,实现java程序和web应用的热部署
JDK1.5之后提供了java.lang.instrument.Instrumentation,即java agent机制可以实现类的redefinition和retransform. redefin ...
- 深入探索 Java 热部署
在 Java 开发领域,热部署一直是一个难以解决的问题,目前的 Java 虚拟机只能实现方法体的修改热部署,对于整个类的结构修改,仍然需要重启虚拟机,对类重新加载才能完成更新操作.对于某些大型的应用来 ...
- 深入探索 Java 热部署--转
在 Java 开发领域,热部署一直是一个难以解决的问题,目前的 Java 虚拟机只能实现方法体的修改热部署,对于整个类的结构修改,仍然需要重启虚拟机,对类重新加载才能完成更新操作.本文将探索如何在不破 ...
- Java 热部署深入探索
简介 在 Java 开发领域,热部署一直是一个难以解决的问题,目前的 Java 虚拟机只能实现方法体的修改热部署,对于整个类的结构修改,仍然需要重启虚拟机,对类重新加载才能完成更新操作.对于某些大型的 ...
- 探索 Java 热部署
在 JAVA 开发领域,热部署一直是一个难以解决的问题,目前的 JAVA 虚拟机只能实现方法体的修改热部署,对于整个类的结构修改,仍然需要重启虚拟机,对类重新加载才能完成更新操作.对于某些大型的应用来 ...
随机推荐
- 【机器学习 Azure Machine Learning】使用Aure虚拟机搭建Jupyter notebook环境,为Machine Learning做准备(Ubuntu 18.04,Linux)
问题描述 在Azure的VM中已经安装好Jupyter,并且通过jupyter notebook --port 9999 已经启动,但是通过本机浏览器,访问VM的公网IP,则始终是不能访问的错误.(T ...
- docker-compose启动consul集群
version: '2.0' services: consul-server1: image: consul:latest hostname: "consul-server1" p ...
- Vulnhub DC3
靶机简介 C-3是另一个专门建造的易受攻击的实验室,目的是获得渗透测试领域的经验.与以前的DC版本一样,这个版本是为初学者设计的,尽管这次只有一个标志,一个入口点,根本没有线索.Linux技能和熟悉L ...
- Java学习的第十九天
1.今天学了接口只能有抽象的常量和方法,接口为interface 承接接口是implements 接口的使用 接口中的方法必须是抽象的,没有构造方法 2.今天没有问题 3.明天学习第六章综合实例 ...
- python爬虫自定义header头部
一.Handler处理器 和 自定义Opener 关注公众号"轻松学编程"了解更多. opener是 urllib.OpenerDirector 的实例,我们之前一直都在使用的ur ...
- P6064 [USACO05JAN]Naptime G
最近做了多少道 usaco 了,连 FJ 都认识我了呀 题意描述 传送门 给你 \(N\) 段时间其中 \(B\) 段时间你要用来睡眠,再给你每个时间睡眠可获得的效用值 \(U_i\). 可惜的是你每 ...
- Java 解决Enum.valueOf找不到枚举出现的异常
由于Enum.valueOf匹配不到枚举时会出现异常,这个可以用try...catch来解决,但是这样会导致代码往臃肿的道路上越走越远. 本文与其说是解决Enum.valueOf找不到枚举出现的异常还 ...
- 转:Microsoft Dynamics AX内部版本号概述
Overview of Microsoft Dynamics AX build numbers 转自:https://community.dynamics.com/ax/b/axsupport/arc ...
- 【SpringBoot】06.SpringBoot访问静态资源
SpringBoot访问静态资源 1.SpringBoot从classpath/static的目录 目录名称必须是static 启动项目,访问http://localhost:8080/0101.jp ...
- 3、Django之路由层
一 路由的作用 路由即请求地址与视图函数的映射关系,如果把网站比喻为一本书,那路由就好比是这本书的目录,在Django中路由默认配置在urls.py中. 二 简单的路由配置 # urls.py fro ...