springboot之aop切面獲取請求

2022-06-05 07:00:06 字數 920 閱讀 2161

在學習springboot的部落格開發中,通過aop切面,對部落格中的操作進行記錄

問題:在切面方法中,無法獲取請求的引數和類名,方法,ip等

@before("log()")//呼叫log方法

public void dobefore(joinpoint joinpoint)

requestcontextholder是乙個包含了request請求的容器,所以要獲取請求中的資訊,自然要從容器中獲取。

然而requestcontextholder只能獲取requestattributes物件,要取得request,必須從servletrequestattributes獲取

通過檢視底層的原始碼,可以發現servletrequestattributes是繼承了abstractrequestattributes,然後abstractrequestattributes繼承了requestattributes

也就是說servletrequestattributes是requestattributes的子類,所以直接強轉就可以了

通過強轉後的servletrequestattributes直接getrequest,即可得到request物件。

使用了內部類封裝所需要列印的值

//    內部類,封裝需要得到的值

private class getrequestlog

public getrequestlog(string url, string ip, string methodname, object requestparms)

@override

public string tostring() ';

}

Spring Boot 之優雅使用 AOP

aop為aspect oriented programming的縮寫,意思是面向切面程式設計,通過預編譯的方式和執行時動態 實現程式功能的統一維護的一種技術。利用aop可以對業務邏輯進行分離,降低耦合度,提高可重用性,提高開發效率。主要用途 日誌記錄 事務處理 異常處理 安全處理 效能統計 在spr...

Springboot如何使用AOP

切面的包 1 springboot 不自帶aop 需要自己新增依賴 org.springframework.bootgroupid spring boot starter aopartifactid dependency 2 直接 aspect寫切面類就行了1 連線點 可以理解為需要被增強的方法 2...

在SpringBoot中配置aop

aop作為spring的乙個強大的功能經常被使用,aop的應用場景有很多,但是實際的應用還是需要根據實際的業務來進行實現。這裡就以列印日誌作為例子,在springboot中配置aop 已經加入我的github模版中 經過那麼長時間的過程,我們也慢慢體會到,在spingboot專案中新增元素是非常方便...