1. 程式人生 > >SpringBoot ------ 使用AOP處理請求

SpringBoot ------ 使用AOP處理請求

aspect 重用 代碼 ava 集成 核心 asp 進行 多個

一。AOP統一處理請求日誌

  1.spring的兩大核心:AOP , IOC

  技術分享圖片

  技術分享圖片

  2.面向對象OOP關註的是將需求功能垂直,劃分為不同的,並且相對獨立的,

   會封裝成良好的類,並且類有屬於自己的行為。

  3.AOP則利用的是一種橫切的技術,將面向對象構建的強大的類的體系,進行水平的切割;

   並且將那些會影響到多個類的公共行為封裝成一個可重用的模塊。這個模塊稱為切面。

  4.AOP的關鍵思想就是:將通用邏輯從業務邏輯中分離出來。

  5.結合處理請求打印日誌這兩種需求來觀察這兩種思想怎麽從垂直和水平來劃分的。

  5.1 一個網絡請求的簡單的生命周期

    技術分享圖片

  5.2 操作數據庫也有一個操作數據庫的生命周期

    技術分享圖片

  技術分享圖片

二。如何在spring中集成aop,以統一處理請求日誌

  1.記錄每一個Http請求實例

    1.1.做個授權訪問的功能

      A.傳統做法:

        在每個方法開始進行判斷,如果登錄了,才可以繼續執行;

      B.在controller中加個構造方法,在構造方法中進行判斷;

        但是不行,spring容器啟動的時候,就把這些類實例化了,當一次http請求來的時候不會再

        執行此構造方法;

      C.AOP寫一個統一的處理

        C1:使用AOP的第一步--添加依賴

          技術分享圖片

        C2:往常需要再啟動類上加個註解,但是AOP不需要。

        C3:建立處理文件:

          建立一個aspect包--在包下建立一個文件(HttpAspect.java)-- 類上加@Aspect註解

          --再加註解@Component(將文件引入到spring 容器中)-- 在類中寫相應的邏輯代碼;

          技術分享圖片

          技術分享圖片

    1.2.功能需求:希望在htttp請求到controller類的方法中之前,就記錄下來;

    技術分享圖片

    1.3.驗證:加了@Before是否在方法執行直接就執行了

      在方法中輸出,看哪個先輸出。

      技術分享圖片

SpringBoot ------ 使用AOP處理請求