spring-loaded热部署

什么是spring-loaded?

spring-loaded是一个对于jvm代理运行时期改变类文件的重载(重新加载),它转换类loadtime让他们服从后重新加载。不像“热代码替换”只允许一次简单的改变JVM运行(例如更改方法体)spring-loaded允许您添加/修改/删除/字段/方法构造函数。注释类型/方法/字段/构造函数也可以修改和可以添加/删除/修改值的枚举类型。

有什么好处?

  1. 开发测试阶段:能够在启动后动态更改代码调试,无需重启减少切换debug时间(ps:对于eclipse而言,在debug时期只能做到动态更新方法体不能增加)
  2. 对于线上测试发布阶段: 能够在出现问题后直接替换class文件而不重启应用(ps:对于外部提供的服务jar形式同样能做到)

怎么使用?

项目地址

https://github.com/spring-projects/spring-loaded

第一步:下载文件

http://repo.spring.io/release/org/springframework/springloaded/1.2.5.RELEASE/springloaded-1.2.5.RELEASE.jar

第二步:配置jvm启动参数

eclipse
eclipse:run as --> run configurations --> arguments -->> VM arguments
-javaagent:E:\repository\org\springframework\spring-load\springloaded-1.2.5.RELEASE.jar 
-noverify -Dspringloaded=verbose
详细描述:
-javaagent: 配置java代理使用下载后的jar包路径
-noverify: 禁用字节码验证
-Dspringloaded=verbose 显示springloaded时的详细信息

image

java命令启动
java -javaagent:E:\repository\org\springframework\spring-load\springloaded-1.2.5.RELEASE.jar -noverify Test 
类似
java jar包动态替换
1.打成runnable Jar
2.命令启动:

java -javaagent:E:\repository\org\springframework\spring-load\springloaded-1.2.5.RELEASE.jar -noverify -Dspringloaded=watchJars=main.jar main.jar

/**
 * 类Test.java的实现描述:TODO 类实现描述 
 * @author Administrator 2016年7月4日 下午4:55:59
 */
public class Test {
    public static void main(String[] args) throws InterruptedException {
    	
    	while(true) {
	    	try {
	    		println();
	    		Thread.sleep(1000);
			} catch (Throwable e) { 
				e.printStackTrace(); 
			}
    		
    	}
    	
    	
    }
    public static void println() { 
    	System.out.println("112222221222222");     
    }
    
}

改变为

/**
 * 类Test.java的实现描述:TODO 类实现描述 
 * @author Administrator 2016年7月4日 下午4:55:59
 */
public class Test {
    public static void main(String[] args) throws InterruptedException {
    	
    	while(true) {
	    	try {
	    		println();
	    		Thread.sleep(1000);
			} catch (Throwable e) { 
				e.printStackTrace(); 
			}
    		
    	}
    	
    	
    }
    public static void println() { 
    	System.out.println("test replace jar");     
    }
    
}

3.重新打包替换
PS:实测在window下无用
手上无linux机器待测试

转载于:https://my.oschina.net/u/2529405/blog/739920

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值