在學習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專案中新增元素是非常方便...