這次分享是我當初在開發某個系統時,參考的一些開源項目架構的思路和風格。html
第一個是Jeesite,它的架構風格以下:前端
你們若是對jeesite感興趣的話,能夠百度搜索找到,不過那已是半年多之前的事情,jeesite目前也發生較大的變化。java
當初我在參考jessite這個思路時,不知道是什麼緣由使我沒有加入module,其實從如今的角度出發,加上module也是一件不錯的事情,module即模塊,經過模塊來擴展功能,這與我目前以service來擴展功能的思路不謀而合。web
jeesite的common思路,我如今也一直再採用,common目前主要是放置經常使用工具類,不過,由於咱們引入了Hutools開源項目,目前common主要是一些數據傳輸類,例如dto、queryvo或者是其餘自定義工具類等等。api
jeesite的core思路,我並無採用,我仍是按照service思路,公共模塊,例如菜單,權限,用戶,組織我將其抽象爲一個公共service。架構
jeesite的web思路,與我如今的作法是同樣,不過我考慮的是,一旦後期模塊拆分分佈式之類的,我能夠輕鬆的經過service思路分離,不過個人service模塊耦合度要儘量低,內聚性高,否則的話,一旦拆分意味着重構,要知道能不重構儘可能不重構,重構是一件痛苦的事情。不少中小公司開發團隊,時常犯的錯誤就是爲了實現功能,代碼質量不作絲毫考慮,固然了,客觀上也是由於業務的緊急性和迫切性不得不爲之。記得第一個項目給個人陰影已經足夠多了,我不想再由於代碼質量的問題,陷入無止休的死循環中(改bug,改bug,這是一件要命的事情)。分佈式
另外jeesite的一個亮點就是技術選型,它的技術選型,能夠說是目前java開發者們,不管是後臺仍是前端都是比較熟悉的,並且目前資料也十分齊全,學習起來也不是特別難。不過,jeesite仍是沒有開源,這也是我當初沒有采用它的一個重要緣由,在我看來,開源意味着源代碼對外開放,一旦有問題,我能夠經過看源代碼來解決,儘管有看不懂的可能性存在,可是好歹能夠看吧,看總比不能看要好,這也是我一向的做風。工具
第二個是iBase4j,它的架構風格以下:學習
它的這個就更好理解了架構設計
iBase4j-Biz-Facade 存放 entity,service等
iBase4j-Biz-Service 存放dao及其xml和實現類,還有配置類等
iBase4j-Biz-Web 存放對應的controller還有配置類
不過我我的以爲它的這個架構設計不是特別好
要是我來設計的話,iBase4j-Biz-Facade我會直接entity,dao,service還有xml文件,iBase4j-Biz-Service專門放實現類,我我的以爲這樣看起來不管是從視覺上,仍是邏輯上看,都比iBase4j原生設計要好。
固然了,有句話說的好,「情人眼裏出西施」或者是「一百我的一百個哈姆萊特」。總而言之,每一個人都有每一個人的想法。
至於iBase4j-SYS相關的其實與我上面說的iBase4j-Biz是同樣的道理。
第三個是人人開源(renrne-security),它的架構以下:
它的這個架構,我認爲適合SpringBoot應用開發,renren-admin一般就是後臺管理系統,renrne-api用於管理接口文檔可做爲獨立的應用也能夠引入admin中,common就沒必要多說,我想在上面的jeesite中已經說得很詳細了。generator,web在線代碼生成器,我也寫過,感興趣的能夠參考個人這篇博客:https://www.cnblogs.com/youcong/p/9494892.html (JavaWeb在線代碼生成器)
我以爲人人開源的這個比較與我接近,因此在多租戶架構設計時,我最早想到的就是人人開源,只不過我沒有理解好它們之間的關係,同時也沒有考慮到技術的侷限性,爲此我付出了一週多的時間成本。
renren-generator生成的代碼,點擊表打成zip包(支持批量選擇),不過我以爲個人在線代碼生成器比它好,可是惟一不足的是,我沒有考慮到權限,所以個人代碼生成器不是特別完美,可是對於提升開發效率仍是有必定的幫助。
總結:
今天分享的一共三個開源項目,分別是jeesite、iBase4j、人人開源等。
分享這三個項目,我要告訴你們的不是學會怎麼用,而是有的時候,在開發設計的時候,若是本身沒有思路的話,特別是架構設計,能夠參考下開源項目,也許你會有意向不到的收穫。
記得荀子說過一句話,「君子性非異也,善假於物也」。以此話,與IT友友們共勉。