8/6 星期一
已辦事項:
- Guns框架中map + wrapper的數據展示方式。
- Java中PO、BO、VO、DTO、POJO異同點。
- Guns框架中日誌系統的瞭解。
- @Bussinesslog註解,自定義註解的學習。
- 日誌保存變更:業務涉及修改操作時,日誌需要進行修改前數據的暫存。
- 日誌系統原理:AOP,設立切點,在業務完成後進行操作日誌的構建和生成。
待辦事項:
- swagger API表達工具的學習。
- Guns集成Shiro權限管理模塊。
8/7 星期二
已辦事項:
- Swagger API 框架學習使用。
- Guns整合Shiro權限管理。
- 全局異常攔截器配置 @ControllerAdvice。
學習筆記:
1. swagger的學習使用
配置:
依賴導入
註解方式聲明
靜態資源引入 -- 顯示swagger-UI + 靜態資源jar包
配置參數:
@Api:用在類上,說明該類的作用。
@ApiOperation:註解來給API增加方法說明。
@ApiImplicitParams : 用在方法上包含一組參數說明。
@ApiImplicitParam:用來註解來給方法入參增加說明。
paramType:參數放在哪個地方
header-->請求參數的獲取:@RequestHeader
query-->請求參數的獲取:@RequestParam
path(用於restful接口)-->請求參數的獲取:@PathVariable
body(@RequestBody)
form(表單提交)
name:參數名
dataType:參數類型
required:參數是否必須傳
value:參數的含義
defaultValue:參數的默認值
@ApiResponses:用於表示一組響應。
@ApiResponse:用在@ApiResponses中,一般用於表達一個錯誤的響應信息
code:數字,例如400
message:信息,例如"請求參數沒填好"
response:拋出異常的類
@ApiModel:描述一個Model的信息
@ApiModelProperty:描述一個model的屬性
測試:自定義請求進行測試
//測試swagger
@RequestMapping(value = "/test/sw/{num}", method = RequestMethod.GET)
@ResponseBody
@ApiOperation(value = "測試Swagger", notes = "測試SwaggerNotes", tags = {""}, response = String.class)
@ApiImplicitParams({
@ApiImplicitParam(value = "測試字符串", name = "str", required = true, dataType = "String", paramType = "query"),
@ApiImplicitParam(value = "測試數字", name = "num", required = true, dataType = "int", paramType = "path"),
})
public String swaggerTest(@RequestParam String str,@PathVariable Integer num){
return str + num.toString();
}
2. Guns整合shiro
權限管理分三塊:用戶 -- 角色 -- 資源(權限)
如何使用shiro來管理權限?
依賴導入
shiro配置
自定義@Permission註解
配置AOP -- 權限檢查
Shiro標籤
添加權限管理步驟:
1. 通過管理系統添加資源權限
2. 爲角色進行權限配置
3. 對用戶分配到相應角色
4. 在Controller層對需要進行權限控制的方法添加@Permission註解
5. 前端頁面如果需要權限控制進行內容展示,需要使用shiro標籤中的hasPermission進行判斷
待辦事項:
- Guns框架中代碼生成器的瞭解。
- 數據範圍學習。
- Guns框架中緩存機制的學習。
8/8 星期三
已辦事項:
-
代碼生成器:
開發新業務的時候,減少重複代碼的編寫,構建業務框架模板。
原理: 模板 + 變量 = 代碼
設計方面:
config + engine
config:
ContextConfig:全局基礎配置
ControllerConfig:Controller模板配置
ServiceConfig:Service模板配置
DaoConfig:DAO模板配置
PageConfig:頁面模板配置
engine:
AbstractTemplateEngine:抽象模板引擎父類
GunsTemplateEngine:模板引擎
SimpleTemplateEngine:模板引擎具體實現類 -- 通用
模板設計模式:在GunsTemplateEngine中定義邏輯骨架,將實現步驟推遲到子類SimpleTemplateEngine中去完成。
-
數據範圍控制的使用:
同一角色用戶會受到數據範圍的限制,展示內容會有所不同。 例如:同角色用戶所屬部門不同,該用戶所能訪問到數據也不同。
在權限管理基礎上添加數據範圍控制:Guns中通過用戶subject的部門字段進行數據範圍控制。
數據範圍控制原理:對原有SQL進行包裝篩選
如何添加數據範圍控制?
1. 定義DataScope
2. 在需要進行數據範圍過濾的查詢方法上,在方法參數上,增加DataScope對象。
DataScope對象中包含兩個屬性,一個是限制數據範圍過濾的字段名,一個是數據範圍的具體值。
3. 配置Mybatis攔截器,對所需執行的SQL語句進行攔截處理。
-
緩存管理:對經常訪問的信息進行存儲,方便再次訪問。
Spring緩存:對緩存實現的抽象,利用spring緩存可以方便的用一套代碼切換不同的緩存實現。
常用緩存的配置:EHcache緩存,Redis緩存
聲明緩存:
@Cacheable -- select
@CachePut -- insert
@CacheEvict -- update/delete
@Caching -- group
待辦事項:
- 完成緩存管理的驗證Demo。
- SPEL表達式的瞭解。
- Mybatis-plus中的數據分頁。
- Transaction事務管理。
8/9 星期四
已辦事項:
-
Spring緩存管理Demo搭建
-
mybatis-plus分頁插件學習。
- Transaction事務管理中傳播行爲的測試Demo。
待辦事項:
- Transaction事務管理中的傳播行爲測試代碼以及事務特性整理併發布博客。
- JWT簽名機制的瞭解學習。
- Spring AOP中的動態JDK代理了解。
- Mybatis-plus中的BaseMapper的學習。
8/10 星期五
已辦事項:
- 事務管理Transaction中關於傳播行爲的測試Demo完成。已發表博客:https://blog.csdn.net/Nerver_77/article/details/81556968
-
JWT簽名認證機制瞭解學習。
-
傳統Session認證的侷限性。
-
JWT的構成部分和基於token鑑權認證機制。
- Guns框架學習筆記初稿完成。
待辦事項:
- 關於數據可視化平臺的搭建,前期Manager模塊的規劃及功能實現。
- 代碼命名規範參考阿里巴巴Java開發手冊。
- 模塊功能細化。
關於Spring AOP中的動態代理和Mybatis-plus框架中BaseMapper的學習會在後期進行總結。