spring 最核心最基礎的兩塊東西,就是ioc和aop,ioc控制反轉的作用處處都能體現,但是aop好像沒什麼作用(大學期間一直這麼理解的。。。),知道接觸到了公司真正的專案時,才有了一些初步的見解,主要應用範圍是日誌的記錄和快取操作。
話不贅述直接上**,普通的xml配置方式著實不夠方便不夠靈活,切點表示式用execution也是不夠靈活的,實際工作中需要進行aop攔截的也許是分布在工程的各個地方,而不是單單只存在於某個包內。所以個人一直在使用的是@annotation()的方式,所有工作都是用註解來完成,只需要在spring配置檔案中(有mvc中的元件需要攔截的話也要在mvc配置檔案中配置)配置**開啟和掃瞄aop切面類存在的包路徑。
@around(),該註解中有兩個屬性乙個是value,乙個是argnames。values就是定義切點匹配條件,argnames個人理解是只有在切點匹配條件中存在引數匹配時,才需要使用。具體解釋請參照
這也是網友做的測試。
自定義註解:stat,accesslog,securitylog。三者在切點匹配條件中用了或符號進行連線,無法直接作為引數傳入通知方法中,但是如果使用與符號進行連線,則可以傳入通知方法,如
至於或符號無法直接作為引數傳入,我還不知道原因,猜測是若被攔截方法只存在其中一種或兩種註解時,則通知方法中三個引數不能都匹配到具體的物件,所以會丟擲異常吧,有知道原因的朋友歡迎告知。既然無法作為引數傳入,但是還是需要根據註解的不同組合進行不同的實現,所以必須要獲取到註解才行,個人是通過反射的方式獲取到方法上存在的所有註解,再來進行操作,具體獲取方式就在getannotations(pjp)方法中,具體實現如下
接下來是spring配置檔案
spring檔案也只需要這樣簡單的配置一下,aop只能攔截被spring建立成bean的方法,第一行就是掃瞄包路徑下需要被建立成bean的類,其餘的就是掃瞄切面類和開啟**cglib。接下來就只要在你希望aop攔截的方法上加入自定義註解即可。
Spring AOP的註解快速應用
一 新建乙個類,aop用來增強該類的方法 package com.example.demo.aop import org.springframework.stereotype.component component public class aopservice 二 建立aop的註解,進行切面程式設...
MQTT的實際應用
1 mqtt簡介 mqtt message queuing telemetry transport,訊息佇列遙測傳輸協議 是一種基於發布 訂閱 publish subscribe 模式的輕量級協議,該協議構建於tcp ip協議之上,mqtt是乙個基於客戶端 伺服器的訊息發布 訂閱傳輸協議。最大的優點...
棧的實際應用
棧是一種先進後出的資料結構,這個我相信大家很好理解。那下面我就通過兩個棧的實際應用來幫助大家更好的理解棧的工作狀態。十進位制數n和其他d進製數的轉換是計算機實現計算的基本問題,其解決方法很多,其中乙個簡單演算法基於下列原理 n n div d d n mod d 其中,div為整除運算,mod為求餘...