本篇內(nèi)容主要講解“如何正確使用Aspect 的.aj 類”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“如何正確使用Aspect 的.aj 類”吧!
公司主營業(yè)務(wù):網(wǎng)站制作、成都網(wǎng)站建設(shè)、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)公司是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)公司推出拉孜免費做網(wǎng)站回饋大家。
一、前言
二、滿腦子都是騷操作
1. 遇到問題
2. 發(fā)現(xiàn)問題
3. 排查問題
三、如何正確使用 Aspect 的 .aj 類
1. 安裝 AspectJ
2. AspectJ 插件
3. 添加依賴 aspectjrt.jar
4. 配置AspectJ編譯器
5. 案例測試
說來也是奇怪,只要是學編程的,從初次接觸的 Java 到安裝 JDK、IDEA、MySQL, 再到接觸 Spring、MyBatis、RPC、MQ,哪怕有時候在淺的坑也會跳進去嘗嘗鮮,一遍抓著頭發(fā),一手點著鼠標也幾乎是你的常態(tài)。你的鍵盤里總是有很多被抓碎的頭發(fā)!
上周,謝飛機(化名)發(fā)過來了自己的手擼的中間件源碼,說這代碼都沒有啥怎么就不能切面呢?
看了幾遍源碼沒發(fā)現(xiàn)問題,開始調(diào)試,還真它哈拉哨的不進這個切面,接下來;
DoJoinPoint
拷貝過來粘貼進去,噗察一下貼進去了,沒提示替換,雖然有報錯但兩個類能共存,如下:
DoJoinPoint
不是一個正經(jīng) Java 類,路徑不對?有看不見的特殊字符?要不是IDEA把 .aj
這貨顯示成 C 類的圖標,可能早就發(fā)現(xiàn)問題了。緊接著把這錯誤類的截圖發(fā)給了謝飛機,問它你是怎么創(chuàng)建的?他說實話了
DoJoinPoint
時,看到一個 Aspect 的選項,以為這個就是創(chuàng)建切面的快捷操作,如圖;
.aj
結(jié)尾的類,并不是一個正經(jīng)的 Java 類,所以切面不到,也根本沒有對應(yīng)的 class 文件
。AspectJ,簡稱 AJ 我自己說的
AspectJ 其實也是 AOP 的一種實現(xiàn)技術(shù),功能類似于攔截器,在集成在 IntelliJ IDEA 開發(fā)工具里。在使用 IntelliJ IDEA 編寫 AspectJ 代碼之前需要本機先安裝 AspectJ 工具包。否則你的 .aj 類不能運行,同時IDEA類顯示出來的 .aj 類,也是C的標識
接下來我們就來聊聊關(guān)于這個東西怎么使用,別再被 .aj 騙了。
在使用 AspectJ 之前,需要去官網(wǎng)下載一個安裝包,地址:https://www.eclipse.org/aspectj/downloads.php 如果官網(wǎng)下載的很慢,可以從我提供的源碼中獲取,也可以從其他途徑搜索下載 aspectj-1.9.4.jar
下載完成安裝;
java -jar aspectj-1.9.4.jar
C:\aspectj1.9
,包括:bin、doc、lib等,后面我們就會使用到這些內(nèi)容。在專業(yè)版 IDEA 中開發(fā) AspectJ,需要安裝以下兩個插件:
開始之前需要在項目中添加 aspectjrt.jar
依賴,aspectjrt.jar
即 AspectJ 安裝目錄中lib
目錄下的jar包。你可以復制到工程中引入,也可以直接引入
Project Structure
IDEA 默認使用 javac
編譯器,這里需要配置 AspectJ 的編譯器 ajc
,在 IDEA 中做相應(yīng)配置。
C:\aspectj1.9\lib\aspectjtools.jar
創(chuàng)建 Aspect 類
public aspect DoAspect {
pointcut logPointcut():call(* ApiTest.hi(..));
void around():call(void ApiTest.hi(..)){
System.out.println("call 開始...");
proceed();
System.out.println("call 結(jié)束...");
}
before(): logPointcut(){
System.out.println("方法執(zhí)行 before");
}
after(): logPointcut(){
System.out.println("方法執(zhí)行 after");
}
}
測試類
public class ApiTest {
public void hi(){
System.out.println("Hi Aspect");
}
public static void main(String[] args) {
ApiTest apiTest = new ApiTest();
apiTest.hi();
}
}
測試結(jié)果
call 開始...
方法執(zhí)行 before
Hi Aspect
call 結(jié)束...
方法執(zhí)行 after
Process finished with exit code 0
到此,相信大家對“如何正確使用Aspect 的.aj 類”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學習!