#HotSwap
1,需要初始化热部署的线程
如下
new HotswapBuilder().setCheckFileTime(3000L).setPlugFilePath("D:/hhh").isGCToDelteFile(true).startHotswap();
setCheckFileTime是定期扫描文件的时间(毫秒)
setPlugFilePath是设置组件的目录
isGCToDelteFile是是否使用gc来删除目录,这里是显示的调用system.gc()这样有利于删除组件目录,默认是flase,如果项目中使用了弱引用等等,这里应该设置为false
startHotswap是启动线程的地方
2,使用ApplicationContext来获取对象
getNewBeans获取是一个新的对象
getBeans获取的是相同的对象ApplicationContext来维护单例
如下
ApplicationContext.getNewBeans(Hello.class);
3,目录设置
就是组件目录,组件目录下的每一个目录表示一个组件
例如组件目录是/data
目录/data/read/表示read功能组件
目录/data/write/表示write功能组件
每个功能组件下需要配置config.properties文件里面是接口和实现类的映射
例如com.xp.Hello=com.xp.HellobyPerson
参考工程里的config.properties
4,config.properties的属性
支持delete属性,设置这个属性后,整个功能组件目录会被删除
支持增加配置文件内容,不支持动态的减少文件内容
5,使用方式
设定好接口,和实现类
然后根据接口编程,把实现类放入功能组件中去,如果动态替换实现,则把旧的功能组件中配置文件设置为delete=true,然后等删除文件后,加入新的组件目录,设置isGCToDelteFile为true会加速删除目录
可以参考工程中的例子
如果遇到废弃单独的接口的情况,只需要把配置文件中的配置项加:d
例如我单独向停止com.xp.Hello的实现只需要com.xp.Hello=com.xp.HellobyPerson:d即可