18/8/6~18/8/10實習報告

8/6 星期一

已辦事項:

  1. Guns框架中map + wrapper的數據展示方式。
  2. Java中PO、BO、VO、DTO、POJO異同點。
  3. Guns框架中日誌系統的瞭解。
  4. @Bussinesslog註解,自定義註解的學習。
  5. 日誌保存變更:業務涉及修改操作時,日誌需要進行修改前數據的暫存。
  6. 日誌系統原理:AOP,設立切點,在業務完成後進行操作日誌的構建和生成。

待辦事項:

  1. swagger API表達工具的學習。
  2. Guns集成Shiro權限管理模塊。

8/7 星期二

已辦事項:

  1. Swagger API 框架學習使用。
  2. Guns整合Shiro權限管理。
  3. 全局異常攔截器配置 @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進行判斷

待辦事項:

  1. Guns框架中代碼生成器的瞭解。
  2. 數據範圍學習。
  3. Guns框架中緩存機制的學習。

8/8 星期三

已辦事項:

  1. 代碼生成器:
    開發新業務的時候,減少重複代碼的編寫,構建業務框架模板。
    原理: 模板 + 變量 = 代碼
    設計方面:
    config + engine
    config:
        ContextConfig:全局基礎配置
        ControllerConfig:Controller模板配置
        ServiceConfig:Service模板配置
        DaoConfig:DAO模板配置
        PageConfig:頁面模板配置
    engine:
        AbstractTemplateEngine:抽象模板引擎父類
        GunsTemplateEngine:模板引擎
        SimpleTemplateEngine:模板引擎具體實現類 -- 通用
    模板設計模式:在GunsTemplateEngine中定義邏輯骨架,將實現步驟推遲到子類SimpleTemplateEngine中去完成。 
     

  2. 數據範圍控制的使用:
    同一角色用戶會受到數據範圍的限制,展示內容會有所不同。 例如:同角色用戶所屬部門不同,該用戶所能訪問到數據也不同。
    在權限管理基礎上添加數據範圍控制:Guns中通過用戶subject的部門字段進行數據範圍控制。
    數據範圍控制原理:對原有SQL進行包裝篩選
    如何添加數據範圍控制?
        1. 定義DataScope
        2. 在需要進行數據範圍過濾的查詢方法上,在方法參數上,增加DataScope對象。
            DataScope對象中包含兩個屬性,一個是限制數據範圍過濾的字段名,一個是數據範圍的具體值。
        3. 配置Mybatis攔截器,對所需執行的SQL語句進行攔截處理。
     

  3. 緩存管理:對經常訪問的信息進行存儲,方便再次訪問。
    Spring緩存:對緩存實現的抽象,利用spring緩存可以方便的用一套代碼切換不同的緩存實現。
    常用緩存的配置:EHcache緩存,Redis緩存
    聲明緩存:
    @Cacheable -- select
    @CachePut -- insert
    @CacheEvict -- update/delete
    @Caching -- group

待辦事項:

  1. 完成緩存管理的驗證Demo。
  2. SPEL表達式的瞭解。
  3. Mybatis-plus中的數據分頁。
  4. Transaction事務管理。

8/9 星期四

已辦事項:

  1. Spring緩存管理Demo搭建

  2. mybatis-plus分頁插件學習。

  3. Transaction事務管理中傳播行爲的測試Demo。

待辦事項:

  1. Transaction事務管理中的傳播行爲測試代碼以及事務特性整理併發布博客。
  2. JWT簽名機制的瞭解學習。
  3. Spring AOP中的動態JDK代理了解。
  4. Mybatis-plus中的BaseMapper的學習。

8/10 星期五

已辦事項:

  1. 事務管理Transaction中關於傳播行爲的測試Demo完成。已發表博客:https://blog.csdn.net/Nerver_77/article/details/81556968
  2. JWT簽名認證機制瞭解學習。

  3. 傳統Session認證的侷限性。

  4. JWT的構成部分和基於token鑑權認證機制。

  5. Guns框架學習筆記初稿完成。

待辦事項:

  1. 關於數據可視化平臺的搭建,前期Manager模塊的規劃及功能實現。
  2. 代碼命名規範參考阿里巴巴Java開發手冊。
  3. 模塊功能細化。

關於Spring AOP中的動態代理和Mybatis-plus框架中BaseMapper的學習會在後期進行總結。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章