java实现报表_修改带 JAVA 自定义类的报表还要重启应用,咋解决?
這是 JAVA 編譯型語言特性決定的,修改 JAVA 程序重啟應(yīng)用也正常。只不過改報表就要重啟整個應(yīng)用就有點(diǎn)夸張了,報表變動比較頻繁,每次都重啟應(yīng)用會影響業(yè)務(wù)的。
這個問題的根本原因是耦合性問題,報表里一旦涉及到 JAVA 代碼就要跟主應(yīng)用程序一起打包部署了,也就是耦合在一起,想要修改報表實(shí)時生效(熱切換)也就不可能了,所以解決這個問題的思路是解耦報表和主應(yīng)用程序。
一般來說報表中使用 JAVA 編碼主要基于以下幾種原因:
1、數(shù)據(jù)計算涉及復(fù)雜過程和邏輯控制
為報表準(zhǔn)備數(shù)據(jù)時涉及的計算過于復(fù)雜,或者需要做比較復(fù)雜的邏輯控制,通過 SQL 不易實(shí)現(xiàn),只能通過 JAVA 硬編碼
2、涉及多樣性數(shù)據(jù)源
報表的數(shù)據(jù)來源多種多樣,當(dāng)涉及 NoSQL、文本、XML、Hadoop、時序數(shù)據(jù)庫、Webservice 等數(shù)據(jù)源時,報表工具無法實(shí)現(xiàn)混合計算,需要用 JAVA 實(shí)現(xiàn)報表數(shù)據(jù)準(zhǔn)備
3、方便應(yīng)用擴(kuò)展
未來業(yè)務(wù)增長需要對應(yīng)用進(jìn)行水平擴(kuò)展(拆分),使用 SQL 不利于未來分庫,只能用 JAVA 實(shí)現(xiàn)報表數(shù)據(jù)計算
4、用于管理
為了管理需要,有時需要記錄報表訪問人、報表查詢次數(shù)、每次查詢了哪些數(shù)據(jù)等信息,通過 JAVA 編寫監(jiān)聽類實(shí)現(xiàn)
這樣看來,要解耦報表模塊也不是很容易,最好直接使用具備這些能力的報表工具:
1. 很強(qiáng)的復(fù)雜計算能力,能完成較復(fù)雜的運(yùn)算,還容易實(shí)現(xiàn)邏輯控制;
2. 多樣性數(shù)據(jù)源支持,最好還能混合計算,如 CSV 和 DB 做 join;
3. 計算不依賴數(shù)據(jù)庫,方便擴(kuò)展
4. 支持熱切換,修改報表不用重啟應(yīng)用
可以看一下 如何降低報表應(yīng)用的耦合度 ,介紹了如何使用報表工具解耦報表和主應(yīng)用,畫個圖感受一下:
原來 JAVA 程序把報表和主應(yīng)用緊緊綁在一起,現(xiàn)在可以把報表模塊單獨(dú)拆分維護(hù),解釋執(zhí)行可以熱切換,修改報表可以不必重啟整個應(yīng)用了。甚至還可以將報表模板單獨(dú)部署,在物理上實(shí)現(xiàn)分離。
工具對復(fù)雜計算的支持可以參考 如何應(yīng)對報表開發(fā)中的復(fù)雜邏輯
對多樣性數(shù)據(jù)源的支持參考 在報表中直接使用多樣性數(shù)據(jù)源
總結(jié)
以上是生活随笔為你收集整理的java实现报表_修改带 JAVA 自定义类的报表还要重启应用,咋解决?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: typescript的类型描述_Type
- 下一篇: 职称类计算机论文,计算机类职称论文发表(