基礎架構包:
***-framework-parent
***-framework-util
***-framework-common
——通用異常處理
——通用響應實體、響應code列舉定義
***-framework-modal
——實體類分模組定義
——各模組通用請求(組合實體類)和響應實體、響應code列舉定義
業務邏輯包:
***-service-api
——介面統一定義
***-service-aacenter-aaa
——包括dao、service、controller
***-service-aacenter-bbb
***-service-bbcenter-ccc
***-service-bbcenter-ddd
…一般的專案,每個需求請求引數都不同,自己定義組合實體類即可,但是響應引數卻是固定的json格式,比如
}
除了data不同,其餘都是固定的三個引數。
所以,在common工程中,首先定義乙個result介面,包含這三個方法。
定義介面的目的是將來不管是公用的的commoncode列舉,還是私用的各個實體類的列舉,都可以實現這個通用的介面。
不定義成繼承是因為,這不是一種擴充套件關係,不管哪個類都只使用這三個引數,前後端是約定好的。
定義介面的另乙個目的是限定型別,將來不管在**想要傳入這三個引數,都統一用resultcode接收,統一由resultcode獲取其實現類列舉的值。
public inte***ce resultcode
然後再common工程中定義乙個通用的commoncode列舉實現這個介面。
列舉就相當於簡寫的static final類,好處是限定的乙個大寫中可以包含多個規定好的值。
如果直接使用class就只能定義乙個大寫對應乙個code,true和message都要另外定義。
將來自己的實體類中也可以寫自己的列舉,實現這個介面,定義自己模組的code和message。
public enum commoncode implements resultcode
@override
public boolean success()
@override
public int code()
@override
public string message()
}
然後在common中定義乙個responseresult類,這是乙個核心過渡類,將來我們所有自己定義的***result都擴充套件這個類而來。
之所以用擴充套件是因為我們寫的每個result響應給前端的實體類中的三要素都一樣,但是data都不一樣。
該類的作用就是承上啟下,將inte***ce+enum(resultcode+commoncode)結構的三段式響應引數通過建構函式注入進來,使得我們每次寫***result時不用每個引數都自己賦一遍值,只用呼叫一下super即可。
public class responseresult
public responseresult(resultcode resultcode)
// getter and setter要寫,這裡省略
}
各個開發人員在自己模組的實體單獨繼承使用示例:
public class queryresponseresultextends responseresult
// 省略 get set
}
swagger開啟,直接在api工程建乙個config包,下面見乙個這個類即可。
@configuration
@enableswagger2
public class swagger2configuration
private apiinfo apiinfo()
}
private static final logger logger = logge***ctory.getlogger(exceptioncatch.class);
logger.error("catch exception:{}",runtimeexception.getmessage());
//或者使用sl4j註解
"catch exception:{}",runtimeexception.getmessage());
日誌配置,檔名就叫logback-spring.xml
<?xml version="1.0" encoding="utf-8"?>
%d [%thread] %-5level %logger - %msg%n
utf8
$/***專案名稱***.%d.log
%d [%thread] %-5level %logger - %msg%n
0512
記一種思考
有些問題,一定有答案,我們可以花時間來研究它,如果一切皆有可能這個原則是正確的,那麼某些問題沒有答案也是可能的,關鍵是我們在知道結果之前很難知道他到底有沒有答案。到底如何做呢?想想曾經看過乙個挖井人的漫畫,畫裡面講的是乙個人在挖井,挖了很多井,沒有乙個挖到水,他認為這裡就沒有水了,這個圖告訴我們,有...
一種簡單通用的重複提交解決方案
對於重複提交,想到的最簡單的方案就是該方法保證冪等性,所謂冪等性就是f f x f x 多次運算結果都是一致的。比如對於innodb儲存引擎,rr級別以上的select查詢就天然具有冪等性。首先重複提交的原因有許多,比如惡意的重複提交,網路重發,分布式rpc的try重發,nginx重發等情況等等。下...
一種通用CMakeLists模板
1.cmake verson,指定cmake版本 cmake minimum required version 3.16 2.project name,指定專案的名稱,一般和專案的資料夾名稱對應 project demo 3.head file path,頭檔案目錄 include director...