如何在運行中的Java web應用中增加新的Java類?

場景

在實際Java Web應用開發中,經常會遇到修改一些Java 類時需要重啓才能生效(熱部署並不會對所有Java 類生效)。線上的項目也是如此,遇到嚴重的Bug需要重啓那個模塊所在的Java 應用。
以上的種種,如果項目比較小或許重啓一下也沒什麼,但實際項目大都不小。這裏提出一種運行時添加或替換Java 類的方法(個人見識有限,可能已經有類似的東西存在)。

實現步驟

添加 .java到Resouce
javac編譯到指定路徑
classLoader加載.class
使用容器對這些類管理

效果

設置一個新增或替換Java類的接口,參數爲Resouce中類的完整類名

// 添加一個名爲Hello的Java類,並執行這個新增類的 void he() 方法
ManageResourceClass manage = DefaultManageResourceClass.getInstance("/application.properties");
Object o = manage.getObject("Hello");
o.getClass().getMethod("he").invoke(o);

這是Hello.java文件的位置

項目的完整代碼

gitee路徑: https://gitee.com/guozhi97/demoOfJavaThermalcompilation.git

發佈了57 篇原創文章 · 獲贊 7 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章