Spring Boot 之優雅使用 AOP

2021-09-24 05:12:24 字數 2607 閱讀 2108

aop為aspect oriented programming的縮寫,意思是面向切面程式設計,通過預編譯的方式和執行時動態**實現程式功能的統一維護的一種技術。利用aop可以對業務邏輯進行分離,降低耦合度,提高可重用性,提高開發效率。

主要用途

日誌記錄

事務處理

異常處理

安全處理

效能統計

···

在spring boot中使用aop記錄介面訪問記錄

1.新增依賴

org.springframework.boot<

/groupid>

spring-boot-starter-aop<

/artifactid>

<

/dependency>

2.編寫切面類
@aspect

// @aspect切面類註解

@component

// @component把切面類加入到ioc容器中

public

class

shuiboaspect

@before

("shuibopointcutlog()"

)public

void

before

(joinpoint joinpoint)

logger.

info

("入參:"

+ params);}

string remoteaddr = request.

getremoteaddr()

; logger.

info

("ip:"

+ remoteaddr)

; string declaringtypename = joinpoint.

getsignature()

.getdeclaringtypename()

; logger.

info

("類名:"

+ declaringtypename)

; string methodname = joinpoint.

getsignature()

.getname()

; logger.

info

("方法名:"

+ methodname);}

@after

("shuibopointcutlog()"

)public

void

after()

@afterreturning

(pointcut =

"shuibopointcutlog()"

, returning =

"object"

)public

void

getafterreturn

(object object)

ms", endtime);}

}

3.編寫測試類
@restcontroller

public

class

testcontroller

else

return shuibo;

}}

4.執行結果(控制台)
info 10216---

[nio-

8080

-exec-

1] cn.shuibo.aspect.shuiboaspect: 請求url:http:

//localhost:

8080

/index

info 10216---

[nio-

8080

-exec-

1] cn.shuibo.aspect.shuiboaspect: 請求方式:get

info 10216---

[nio-

8080

-exec-

1] cn.shuibo.aspect.shuiboaspect: 入參: text=

1 info 10216---

[nio-

8080

-exec-

1] cn.shuibo.aspect.shuiboaspect: ip:0:

0:0:

0:0:

0:0:

1 info 10216---

[nio-

8080

-exec-

1] cn.shuibo.aspect.shuiboaspect: 類名:cn.shuibo.controller.testcontroller

info 10216---

[nio-

8080

-exec-

1] cn.shuibo.aspect.shuiboaspect: 方法名:index

info 10216---

[nio-

8080

-exec-

1] cn.shuibo.aspect.shuiboaspect: 訪問耗時:

4ms

總結

SpringBoot如何優雅地使用Swagger2

spring boot 框架是目前非常流行的微服務框架,我們很多情況下使用它來提供 rest api。而對於 rest api 來說很重要的一部分內容就是文件,swagger 為我們提供了一套通過 和註解自動生成文件的方法,這一點對於保證 api 文件的及時性將有很大的幫助。本文將使用 swagge...

優雅的使用springboot整合任務排程

任務排程器就是按照規定的計畫完成任務 比如windows,linux的自帶的任務排程系統功能 平常開發中也就是按照規定的時間點輪詢執行計畫任務 比如每週三的凌晨進行資料備份 或者按時間隔觸發一次任務排程 比如每3小時執行一次定時抓拍 如果有用過quartz的讀者肯定了解cron時鐘週期計畫 下面是c...

優雅的使用Python之軟體管理

方法一 lpython get pip.py d python33 python get pip.py downloading unpacking pip downloading unpacking setuptools installing collected packages pip,setup...