在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java/ springmvc項目之間的數(shù)據(jù)互通

springmvc項目之間的數(shù)據(jù)互通

因為公司沒有精通spring mvc的高手,很多東西都是看網(wǎng)上的資料等自己學(xué)的。現(xiàn)在有幾點關(guān)于項目構(gòu)架與數(shù)據(jù)通信上的問題,希望有懂的大神指點指點。
首先按服務(wù)內(nèi)容的不同分別建立項目,比如用于報表展示的BI項目,用于后臺管理的CMS項目,用于文件管理的FILE項目等。
對于這點,簡單的分類感覺沒有問題,但是隨著某些項目如CMS等,會隨著需求的越來越多,越來越具體,使得項目變得越來越龐大并且不易與重構(gòu)及優(yōu)化工作。比如一開始在CMS中可能只是用戶和組織數(shù)據(jù)維護(hù),后面又加入了權(quán)限,報表等各種數(shù)據(jù)的維護(hù),包括理論上是其他項目的如文件管理FILE項目的實際管理及操作界面其實也是集成在該項目中的。
后來在了解spring boot的微服務(wù)開發(fā)思想后,也想將spring mvc項目改造成為類似的構(gòu)架。即針對每個功能點來單獨建立項目并維護(hù)。如CMS就可以拆分成USER用戶管理、ORG組織管理、REPORT報表管理、GROUP群組管理等等。
面臨問題:
①項目隨需求變得越來越大且不易改善。
②項目之間的數(shù)據(jù)如何互通調(diào)用。
目前我自己的想法是將項目按服務(wù)類別拆分,如上述的USER、ORG、FILE等都分別建項目管理維護(hù)。這種做應(yīng)該能夠在一定程度上解決問題①,使得該問題不需要特別處理。
但是這種操作就會面臨問題②,(假設(shè)項目已經(jīng)細(xì)化拆分為USER、ORG、FILE等)
舉個最簡單的例子,比如用戶和組織的關(guān)系綁定。我在USER項目中會需要使用ORG數(shù)據(jù),而在ORG項目中會需要使用USER數(shù)據(jù),但是由于我已經(jīng)分別建項目進(jìn)行管理維護(hù),而我又不知道項目直接的類如何進(jìn)行調(diào)用,此時我就很難完成這部分功能。(如果有大神知道,請告訴我怎么做?。?br>比如直接在ORG項目中直接調(diào)用USER項目中的service接口如getUsers這樣的方法,獲取結(jié)果List<User>以便使用。
后來我發(fā)現(xiàn)可以在后臺通過HttpClient來實現(xiàn)迂回的接口調(diào)用工作來獲取數(shù)據(jù),比如我在ORG項目的接口中,通過HttpClient模擬數(shù)據(jù)請求,請求USER項目的Controller接口(相當(dāng)于是Service接口)來獲取數(shù)據(jù)。通過這種方式雖然能得到數(shù)據(jù),但是仍舊有幾個后續(xù)處理上的問題。
如獲取到的數(shù)據(jù)是json格式或Map格式,無法直接解析為User實體對象進(jìn)行數(shù)據(jù)處理,這樣的話在取值賦值、空值判斷等操作的時候顯得尤為麻煩,并且代碼工作量大且不夠“優(yōu)雅”。
另一個問題是這種方式的效率問題,更加浪費內(nèi)存并且花費時間(這點尤其重要)。

具體就說到這,希望各位不要嫌棄的啰嗦,我也只是希望能夠盡量明白的表達(dá)我的意思和問題:
如何有效的進(jìn)行springmvc項目之間的底層數(shù)據(jù)交互?

最后在補充說明一下,有些人可能會說:你要在ORG項目中使用USER類的對象,那在項目里面建一個一樣的User Class不就好了嘛。對,這樣確實可以,但是這樣做的話我拆分項目的意義呢?而且如果我在很多小項目都要用到的話,就需要在這些項目里都建一份User類,那如果以后User類對應(yīng)的數(shù)據(jù)庫新加了一個字段怎么辦?我在模型中總也要把這個屬性加進(jìn)去吧?這時候的維護(hù)工作可不小啊。

回答
編輯回答
絯孑氣

服務(wù)之間通過RPC調(diào)用,推薦GRPC

2017年6月6日 07:59