中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

如何正確使用Aspect的.aj類

本篇內(nèi)容主要講解“如何正確使用Aspect 的.aj 類”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“如何正確使用Aspect 的.aj 類”吧!

公司主營(yíng)業(yè)務(wù):網(wǎng)站制作、成都網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)公司是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)公司推出拉孜免費(fèi)做網(wǎng)站回饋大家。

目錄

  • 一、前言

  • 二、滿腦子都是騷操作

    • 1. 遇到問題

    • 2. 發(fā)現(xiàn)問題

    • 3. 排查問題

  • 三、如何正確使用 Aspect 的 .aj 類

    • 1. 安裝 AspectJ

    • 2. AspectJ 插件

    • 3. 添加依賴 aspectjrt.jar

    • 4. 配置AspectJ編譯器

    • 5. 案例測(cè)試

一、前言

說來也是奇怪,只要是學(xué)編程的,從初次接觸的 Java 到安裝 JDK、IDEA、MySQL, 再到接觸 Spring、MyBatis、RPC、MQ,哪怕有時(shí)候在淺的坑也會(huì)跳進(jìn)去嘗嘗鮮,一遍抓著頭發(fā),一手點(diǎn)著鼠標(biāo)也幾乎是你的常態(tài)。你的鍵盤里總是有很多被抓碎的頭發(fā)!

二、滿腦子都是騷操作

1. 遇到問題

上周,謝飛機(jī)(化名)發(fā)過來了自己的手?jǐn)]的中間件源碼,說這代碼都沒有啥怎么就不能切面呢?

如何正確使用Aspect 的.aj 類  
  • 最開始我大意了,讓謝飛機(jī)發(fā)了一些代碼截圖。
  • 看截圖的代碼,這完全就和我寫的中間件里的代碼一毛一樣,沒啥問題呀,包路徑也能掃描到,咋就不能切面了?
  • 我說你打個(gè)斷點(diǎn)調(diào)試下,看看怎么切不到了呢?嘿,調(diào)試了,直接通過,就是沒切面到。
  • 此時(shí)我思考了JDK版本、環(huán)境配置、Spring上下文、切面的定義、包的路徑以及這小子是否忽悠我?
  • 最后我抱著這小子忽悠我的心里,把源碼要過來了。

2. 發(fā)現(xiàn)問題

看了幾遍源碼沒發(fā)現(xiàn)問題,開始調(diào)試,還真它哈拉哨的不進(jìn)這個(gè)切面,接下來;

  • 謝飛機(jī)的源碼保留,復(fù)制出來一份新的。
  • 我的目的要先讓他跑起來,在研究。接下來我把自己的工程里的     DoJoinPoint 拷貝過來粘貼進(jìn)去,噗察一下貼進(jìn)去了,沒提示替換,雖然有報(bào)錯(cuò)但兩個(gè)類能共存,如下:     如何正確使用Aspect 的.aj 類
    • 這就神奇了哈,我當(dāng)時(shí)懷疑是不它那      DoJoinPoint 不是一個(gè)正經(jīng) Java 類,路徑不對(duì)?有看不見的特殊字符?
  • 既然發(fā)現(xiàn)這個(gè)類不對(duì),那行先刪掉。讓程序先跑起來,確保除了這個(gè)類其他的內(nèi)容沒有問題,這樣也好排查問題。
  • 還別說,去掉這個(gè)錯(cuò)誤類,程序可以正常運(yùn)行,攔截到切面內(nèi)容了。
  • 既然程序能跑了,我就想著這可以看看問題出在哪了,沒想到就只打開個(gè)文件夾,就發(fā)現(xiàn)了一個(gè)神奇的     AJ!這貨壓根就不是 Java 類!     如何正確使用Aspect 的.aj 類
 

3. 排查問題

要不是IDEA把 .aj 這貨顯示成 C 類的圖標(biāo),可能早就發(fā)現(xiàn)問題了。緊接著把這錯(cuò)誤類的截圖發(fā)給了謝飛機(jī),問它你是怎么創(chuàng)建的?他說實(shí)話了

  • 謝飛機(jī)先說自己偷懶了,哈哈哈,讓人怪不好意思的!
  • 他說在創(chuàng)建     DoJoinPoint 時(shí),看到一個(gè) Aspect 的選項(xiàng),以為這個(gè)就是創(chuàng)建切面的快捷操作,如圖;     如何正確使用Aspect 的.aj 類
  • 創(chuàng)建完成以后發(fā)現(xiàn)有點(diǎn)不對(duì),不是 class 類型的,是個(gè) aspect,于是他手動(dòng)把 aspect 改成了 class,如圖;     如何正確使用Aspect 的.aj 類
  • 所以,謝飛機(jī)實(shí)際創(chuàng)建出來的是一個(gè) aspect 的以     .aj 結(jié)尾的類,并不是一個(gè)正經(jīng)的 Java 類,所以切面不到,也根本沒有對(duì)應(yīng)的 class 文件     如何正確使用Aspect 的.aj 類。
 

三、如何正確使用 Aspect 的 .aj 類

AspectJ,簡(jiǎn)稱 AJ  我自己說的

AspectJ 其實(shí)也是 AOP 的一種實(shí)現(xiàn)技術(shù),功能類似于攔截器,在集成在 IntelliJ IDEA 開發(fā)工具里。在使用 IntelliJ IDEA 編寫 AspectJ 代碼之前需要本機(jī)先安裝 AspectJ 工具包。否則你的 .aj 類不能運(yùn)行,同時(shí)IDEA類顯示出來的 .aj 類,也是C的標(biāo)識(shí)

接下來我們就來聊聊關(guān)于這個(gè)東西怎么使用,別再被 .aj 騙了。

1. 安裝 AspectJ

在使用 AspectJ 之前,需要去官網(wǎng)下載一個(gè)安裝包,地址:https://www.eclipse.org/aspectj/downloads.php 如果官網(wǎng)下載的很慢,可以從我提供的源碼中獲取,也可以從其他途徑搜索下載 aspectj-1.9.4.jar

下載完成安裝;

  • 雙擊安裝
  • 命令安裝     java -jar aspectj-1.9.4.jar
  • 配置說明:沒有配置,傻瓜式下一步就可以了
如何正確使用Aspect 的.aj 類  
  • 默認(rèn)配置安裝完成以后會(huì)在C盤創(chuàng)建出一個(gè)文件夾     C:\aspectj1.9,包括:bin、doc、lib等,后面我們就會(huì)使用到這些內(nèi)容。
 

2. AspectJ 插件

在專業(yè)版 IDEA 中開發(fā) AspectJ,需要安裝以下兩個(gè)插件:

  • Spring AOP/@AspectJ
  • AspectJ Support
如何正確使用Aspect 的.aj 類  
 

3. 添加依賴 aspectjrt.jar

開始之前需要在項(xiàng)目中添加 aspectjrt.jar 依賴,aspectjrt.jar 即 AspectJ 安裝目錄中lib目錄下的jar包。你可以復(fù)制到工程中引入,也可以直接引入

如何正確使用Aspect 的.aj 類  
  1. 在工程上鼠標(biāo)右鍵,點(diǎn)擊 Open Module Setting 打開     Project Structure
  2. 點(diǎn)擊 Libraries 選項(xiàng)卡,和上面的 + 號(hào),創(chuàng)建 New Project Library
  3. 選擇 C:\aspectj1.9\lib\aspectjrt.jar 路徑,點(diǎn)擊即可配置完成
 

4. 配置AspectJ編譯器

IDEA 默認(rèn)使用 javac 編譯器,這里需要配置 AspectJ 的編譯器 ajc,在 IDEA 中做相應(yīng)配置。

如何正確使用Aspect 的.aj 類  
  1. 打開 IDEA -> File  -> Settings 對(duì)話
  2. 選擇 Build,Execution,Deployment -> Compiler -> Java Compiler
  3. Use complier:選擇 Ajc
  4. 在 Path to aspectjtools.jar 里配置路徑     C:\aspectj1.9\lib\aspectjtools.jar
 

5. 案例測(cè)試

創(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");
    }

}
 

測(cè)試類

public class ApiTest {

    public void hi(){
        System.out.println("Hi Aspect");
    }

    public static void main(String[] args) {
        ApiTest apiTest = new ApiTest();
        apiTest.hi();
    }

}
 

測(cè)試結(jié)果

call 開始...
方法執(zhí)行 before
Hi Aspect
call 結(jié)束...
方法執(zhí)行 after

Process finished with exit code 0
 
  • 到這,才是一個(gè)關(guān)于 Aspect 類的正確打開方式,關(guān)于 Aspect 的使用也可以嘗試搞搞,此篇還只是關(guān)于此類切面寫法的一個(gè)入門。
 

四、總結(jié)

  • 你的代碼越粗獷、越豪放、越騷氣,幾乎你遇到的問題也是越多的,可能就是因?yàn)闆]有遵守一定的研發(fā)執(zhí)行規(guī)范,所以遇到的這些有點(diǎn)傻的問題,幾乎會(huì)浪費(fèi)掉你一個(gè)上午或者一天。
  • 但有些時(shí)候如果你能認(rèn)真對(duì)待你弄出來的bug,深入分析下它是如何產(chǎn)生的,并把它復(fù)現(xiàn)出來一點(diǎn)點(diǎn)深入研究下,可能也會(huì)得到意想不到的收獲,也說不定。所以凡是認(rèn)真,凡事沒有壞事。
  • 關(guān)于切面、關(guān)于源碼、關(guān)于開發(fā),可能并不應(yīng)該只注重于功能實(shí)現(xiàn),甚至有時(shí)候要想辦法逃離日復(fù)一日沒有成長(zhǎng)的工作內(nèi)容。多在那些有價(jià)值的技術(shù)上下功夫,那你的收獲也是最多的。

到此,相信大家對(duì)“如何正確使用Aspect 的.aj 類”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

本文名稱:如何正確使用Aspect的.aj類
新聞來源:http://www.rwnh.cn/article30/jscspo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google企業(yè)建站、網(wǎng)站排名、靜態(tài)網(wǎng)站、外貿(mào)建站、品牌網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

綿陽服務(wù)器托管
定西市| 阳江市| 高清| 绍兴市| 邛崃市| 桃园市| 海原县| 澳门| 阳信县| 靖西县| 和田市| 开远市| 珲春市| 灌南县| 上杭县| 东乌| 广州市| 西昌市| 邢台县| 德惠市| 休宁县| 南康市| 大庆市| 瑞金市| 竹山县| 板桥市| 商城县| 日土县| 荣昌县| 泸州市| 察雅县| 新乡县| 屏边| 独山县| 江津市| 汉源县| 迭部县| 仁布县| 盘山县| 新蔡县| 漳平市|