类加载器

package com.yujz;

public class ClassLoaderTest {

	
	//热部署测试
	public static void main(String[] args) throws Exception {
		String name = "com.yujz.LogImpl";
		
		//通过自定义类加载器  加载    类LogImpl
		YujzClassLoader myClassLoader = new YujzClassLoader();
		
		Class<?> clazzClass = Class.forName(name,true,myClassLoader);
		System.out.println(clazzClass);
		
		//当采用自定义类加载器 加载 类LogImpl时,这个LogImpl类里面所引用的类(如LogLevel),都会使用自定义的类加载器进行加载,但是,为了阻止自定义
		//的类覆盖J2SE的类,当自定义加载器加载某个类时,必须采用委托机制,先让其父加载器加载,如果父加载器找不到,才使用自定义的类加载器  加载
		
		Class<?> clazz = myClassLoader.loadClass(name);
		Log log = (Log) clazz.newInstance();
		log.log("rt");                   
		
		
		
		
		
		//将以下三个变量设置为null,则 类LogImpl的class字节码会从JVM中卸载
		log = null;
		clazz = null;
		myClassLoader = null;
		
		//这时去修改LogImpl.class文件
		
		Thread.sleep(15000);
		
		
		//将会从新 加载类LogImpl,不需要程序重启,相当于热部署
		myClassLoader = new YujzClassLoader();
		clazz = myClassLoader.loadClass(name);
		log = (Log) clazz.newInstance();
		log.log("tt");
		
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值