JDK1.5之后提供了java.lang.instrument.Instrumentation,即java agent机制能够实现类的redefinition和retransform,它能够实现类的热替换,但遗憾的是功能很有限。
为工作需要,最近在研究热部署实现,遇到一个开源项目spring-loaded,看了下官方的介绍文档:发现它功能比JDK自带的强大多了。
经过自己的尝试,发现使用spring-loaded项目,它是基于javaAgent实现的一个代理,确实可以实现java应用的热部署。下面介绍下如何将spring-loaded引入到项目中。我们可以运行下面的这段代码,然后修改A.say()方法,看看在不重启JVM的情况下,是否能够动态改变。
public class SpringLoadTest
{
public static void main(String[] args) throws Exception
{
SpringLoadTest test = new SpringLoadTest();
while (true)
{
test .say();
Thread.sleep(3000);
}
}
public void say(){
System.out.println(“spring-loaded testing ...”);
}
}
为了使用spring-loaded实现热部署,我们只需要在启动JVM的时候,增加如下的启动参数即可-javaagent:springloaded-1.2.5.RELEASE.jar -noverify
如果是通过eclipse启动,那么可以在run confiuration中进行设置,如下图:
如果是通过eclipse启动,那么可以在run confiuration中进行设置
接下来我们看下如何在tomcat中使用spring-loaded实现war包的热部署。将下载的springloaded-1.2.5.RELEASE.jar放到%TOMCAT_HOME%/bin/目录下,然后修改该目录下的catalina.bat
set JAVA_OPTS=-javaagent:springloaded-1.2.5.RELEASE.jar -noverify
这样就完成了spring-loaded在tomcat下配置,能够检测tomcat下部署的web应用,在不重启tomcat的情况下,实现应用的热部署。
接下来我们看下如何在resin中使用spring-loaded实现war包的热部署。将下载的springloaded-1.2.5.RELEASE.jar放到%RESIN_HOME%/lib/目录下,然后修改resin配置目录下的resin.xml,在<server-default>中添加如下配置:
<jvm-arg>-javaagent:springloaded-1.2.5.RELEASE.jar</jvm-arg>
<jvm-arg>-noverify</jvm-arg>
这样就完成了spring-loaded在resin下的配置,能够检测resin下部署的web应用,在不重启resin的情况下,实现应用的热部署。
注意如果出现Error opening zip file or jar manifest missing:
javaagent:springloaded-1.2.5.RELEASE.jar
可以将此处改为jar的绝对路径即可。
目前最新版本的jar包正是springloaded-1.2.5.RELEASE.jar下载方式如下:
外网可到github获取最新版
https://github.com/spring-projects/spring-loaded
分享到:
相关推荐
SpringLoaded是Spring Boot开发过程中的一款重要工具,它主要用于实现应用的热部署,即在开发阶段无需重启服务器就能实时看到代码更改的效果。这个压缩包文件"springloaded-1.2.8.RELEASE"包含了该工具的特定版本,...
标题 "idea+springboot+springloaded热部署例子" 涉及到的是使用IntelliJ IDEA(简称Idea)作为开发环境,结合Spring Boot和SpringLoaded进行应用的热部署技术。这一过程允许开发者在代码修改后无需重启服务器就能...
SpringLoaded是Spring框架提供的一款强大的热部署工具,它允许开发者在开发过程中无需重启应用程序服务器就能实时看到代码修改的效果。这极大地提高了开发效率,减少了因为频繁重启应用而浪费的时间。本教程将详细...
《SpringLoaded-1.2.4.RELEASE:高效Spring应用热部署利器》 SpringLoaded是Spring框架中的一个强大工具,其1.2.4.RELEASE版本是为开发人员提供高效Spring应用程序热部署功能的重要组件。在Java开发环境中,每当...
Spring-Loaded 是 Spring 框架提供的一种热部署解决方案。它可以在应用程序运行时,动态地 reload 类和资源。使用 Spring-Loaded 需要在项目的 pom.xml 文件中添加依赖项: ```xml <groupId>org.springframework ...
总之,SpringLoaded是Spring Boot提高开发效率的重要工具,它使得开发者能够在开发过程中快速验证代码更改,减少了构建和部署的次数,提高了开发效率。使用SpringLoaded 1.2.4.RELEASE版本,我们可以确保享受到稳定...
这个"spring-loaded-example"项目是专门用来展示如何在 Spring Boot 应用中结合 Spring Loaded 实现热部署的。 首先,我们来理解 Spring Boot 的核心特性: 1. 自动配置:Spring Boot 通过 "spring-boot-starter" ...
在Spring框架的生态系统中,SpringLoaded扮演着代码热部署的角色,允许开发者在不重启服务器的情况下,实时更新修改后的Java代码,从而加快了调试和测试的流程。 1. **什么是SpringLoaded?** SpringLoaded是...
Spring Boot 提供了一种便捷的方式来实现热部署,主要依赖于 `spring-boot-devtools` 模块。本文将详细介绍如何集成 `spring-boot-devtools` 并实现热部署,同时也会提及一些实现热部署的其他方式以及集成时需要注意...
SpringLoaded 是一个强大的Java应用程序开发工具,主要用于实现Java程序的热部署功能。热部署是指在程序运行时,当源代码发生改变,无需停止并重新启动应用,就能自动更新已加载的类,使得开发者可以快速看到代码...
SpringLoaded是Spring框架提供的一款强大的热部署工具,主要用于在开发过程中快速实现代码修改后的自动重载,极大地提高了开发效率。这个"springloaded-1.2.4.RELEASE.zip"文件包含的是SpringLoaded的1.2.4版本,该...
<artifactId>springloaded <version>1.2.6.RELEASE ``` 引入依赖后,确保IDE(例如IntelliJ IDEA)配置正确。在IDE中,你需要开启自动编译,这可以通过以下步骤完成: - `File` -> `Settings` -> `...
springloaded-1.2.6.RELEASE.jar
spring-boot中使用springloaded实现热部署,添加依赖jar包 <groupId>org.springframework <artifactId>springloaded <version>1.2.7.RELEASE </dependency>
SpringBoot 热部署 Springloaded 实现过程解析 SpringBoot 热部署是指在不重新启动程序的情况下,实时更新和 Reload 项目中的代码变化,以提高开发效率和体验。Springloaded 是一种热部署工具,能够实时监控和 ...
JReble的替代产品springloaded: 允许你动态得新增/修改/删除某个方法/字段/构造方法,同样可以修改作用在类/方法/字段/构造方法上的注解.也可以新增/删除/改变枚举中的值。 压缩包中包含最新版本的springloaded和...
同时,为了支持SpringBoot的热部署,我们需要添加Spring Loaded插件到IDEA,或者在`pom.xml`中添加以下依赖: ```xml <groupId>org.springframework.boot <artifactId>spring-boot-devtools <optional>true ``...
此外,SpringLoaded在处理某些特定的代码变化时可能不如完全重启服务器那样准确,因此在发布生产环境时,仍然建议使用正常的部署流程。 总的来说,SpringLoaded是一款对于提高开发效率极具价值的工具,尤其适合于...
springboot热部署的依赖包,手动安装到maven库中;还需要更改开发工具的配置,具体配置请自行查找
<artifactId>springloaded <version>1.2.6.RELEASE ``` 启动项目时,应使用 `mvn spring-boot:run` 命令而不是直接运行主方法。这样,当你修改代码后,Spring Loaded会自动检测到变化并加载新版本的类。 **...