您好,登錄后才能下訂單哦!
本篇內容主要講解“如何正確使用Aspect 的.aj 類”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“如何正確使用Aspect 的.aj 類”吧!
一、前言
二、滿腦子都是騷操作
1. 遇到問題
2. 發現問題
3. 排查問題
三、如何正確使用 Aspect 的 .aj 類
1. 安裝 AspectJ
2. AspectJ 插件
3. 添加依賴 aspectjrt.jar
4. 配置AspectJ編譯器
5. 案例測試
說來也是奇怪,只要是學編程的,從初次接觸的 Java 到安裝 JDK、IDEA、MYSQL, 再到接觸 Spring、MyBatis、RPC、MQ,哪怕有時候在淺的坑也會跳進去嘗嘗鮮,一遍抓著頭發,一手點著鼠標也幾乎是你的常態。你的鍵盤里總是有很多被抓碎的頭發!
上周,謝飛機(化名)發過來了自己的手擼的中間件源碼,說這代碼都沒有啥怎么就不能切面呢?
看了幾遍源碼沒發現問題,開始調試,還真它哈拉哨的不進這個切面,接下來;
DoJoinPoint
拷貝過來粘貼進去,噗察一下貼進去了,沒提示替換,雖然有報錯但兩個類能共存,如下:
DoJoinPoint
不是一個正經 Java 類,路徑不對?有看不見的特殊字符?要不是IDEA把 .aj
這貨顯示成 C 類的圖標,可能早就發現問題了。緊接著把這錯誤類的截圖發給了謝飛機,問它你是怎么創建的?他說實話了
DoJoinPoint
時,看到一個 Aspect 的選項,以為這個就是創建切面的快捷操作,如圖;
.aj
結尾的類,并不是一個正經的 Java 類,所以切面不到,也根本沒有對應的 class 文件
。AspectJ,簡稱 AJ 我自己說的
AspectJ 其實也是 AOP 的一種實現技術,功能類似于攔截器,在集成在 IntelliJ IDEA 開發工具里。在使用 IntelliJ IDEA 編寫 AspectJ 代碼之前需要本機先安裝 AspectJ 工具包。否則你的 .aj 類不能運行,同時IDEA類顯示出來的 .aj 類,也是C的標識
接下來我們就來聊聊關于這個東西怎么使用,別再被 .aj 騙了。
在使用 AspectJ 之前,需要去官網下載一個安裝包,地址:https://www.eclipse.org/aspectj/downloads.php 如果官網下載的很慢,可以從我提供的源碼中獲取,也可以從其他途徑搜索下載 aspectj-1.9.4.jar
下載完成安裝;
java -jar aspectj-1.9.4.jar
C:\aspectj1.9
,包括:bin、doc、lib等,后面我們就會使用到這些內容。在專業版 IDEA 中開發 AspectJ,需要安裝以下兩個插件:
開始之前需要在項目中添加 aspectjrt.jar
依賴,aspectjrt.jar
即 AspectJ 安裝目錄中lib
目錄下的jar包。你可以復制到工程中引入,也可以直接引入
Project Structure
IDEA 默認使用 javac
編譯器,這里需要配置 AspectJ 的編譯器 ajc
,在 IDEA 中做相應配置。
C:\aspectj1.9\lib\aspectjtools.jar
創建 Aspect 類
public aspect DoAspect {
pointcut logPointcut():call(* ApiTest.hi(..));
void around():call(void ApiTest.hi(..)){
System.out.println("call 開始...");
proceed();
System.out.println("call 結束...");
}
before(): logPointcut(){
System.out.println("方法執行 before");
}
after(): logPointcut(){
System.out.println("方法執行 after");
}
}
測試類
public class ApiTest {
public void hi(){
System.out.println("Hi Aspect");
}
public static void main(String[] args) {
ApiTest apiTest = new ApiTest();
apiTest.hi();
}
}
測試結果
call 開始...
方法執行 before
Hi Aspect
call 結束...
方法執行 after
Process finished with exit code 0
到此,相信大家對“如何正確使用Aspect 的.aj 類”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。