成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一個Bug,讓我發現了 Java 界的.AJ(錐)

開發 前端
AspectJ 其實也是 AOP 的一種實現技術,功能類似于攔截器,在集成在 IntelliJ IDEA 開發工具里。在使用 IntelliJ IDEA 編寫 AspectJ 代碼之前需要本機先安裝 AspectJ 工具包。

一、前言

話我放這,踩過的坑越多頭發越少!

說來也是奇怪,只要是學編程的,從初次接觸的 Java 到安裝 JDK、IDEA、MYSQL, 再到接觸 Spring、MyBatis、RPC、MQ,哪怕有時候在淺的坑也會跳進去嘗嘗鮮,一遍抓著頭發,一手點著鼠標也幾乎是你的常態。你的鍵盤里總是有很多被抓碎的頭發!

但,哪怕是抓了這么頭發,還是遇到了一個滿腦子都是騷操作的小伙。“傅哥,我的切面怎么攔截不到?我是照著你的《SpringBoot 中間件設計和開發》專欄寫的,你給我看看吧,我都弄了一天了”

接下來我帶著大家一起看看什么是快樂星球,他是怎么一頓騷操作讓切面攔截不到的!

二、滿腦子都是騷操作

1. 遇到問題

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

最開始我大意了,讓謝飛機發了一些代碼截圖。

看截圖的代碼,這完全就和我寫的中間件里的代碼一毛一樣,沒啥問題呀,包路徑也能掃描到,咋就不能切面了?

我說你打個斷點調試下,看看怎么切不到了呢?嘿,調試了,直接通過,就是沒切面到。

此時我思考了JDK版本、環境配置、Spring上下文、切面的定義、包的路徑以及這小子是否忽悠我?

最后我抱著這小子忽悠我的心里,把源碼要過來了。

2. 發現問題

看了幾遍源碼沒發現問題,開始調試,還真它哈拉哨的不進這個切面,接下來;

謝飛機的源碼保留,復制出來一份新的。

我的目的要先讓他跑起來,在研究。接下來我把自己的工程里的 DoJoinPoint拷貝過來粘貼進去,噗察一下貼進去了,沒提示替換,雖然有報錯但兩個類能共存,如下:這就神奇了哈,我當時懷疑是不它那 DoJoinPoint不是一個正經 Java 類,路徑不對?有看不見的特殊字符?

既然發現這個類不對,那行先刪掉。讓程序先跑起來,確保除了這個類其他的內容沒有問題,這樣也好排查問題。

還別說,去掉這個錯誤類,程序可以正常運行,攔截到切面內容了。

既然程序能跑了,我就想著這可以看看問題出在哪了,沒想到就只打開個文件夾,就發現了一個神奇的AJ!這貨壓根就不是 Java 類!

3. 排查問題

要不是IDEA把 .aj 這貨顯示成 C 類的圖標,可能早就發現問題了。緊接著把這錯誤類的截圖發給了謝飛機,問它你是怎么創建的?他說實話了

謝飛機先說自己偷懶了,哈哈哈,讓人怪不好意思的!

他說在創建 DoJoinPoint時,看到一個 Aspect 的選項,以為這個就是創建切面的快捷操作,如圖;

創建完成以后發現有點不對,不是 class 類型的,是個 aspect,于是他手動把 aspect 改成了 class,如圖;

所以,謝飛機實際創建出來的是一個 aspect 的以 .aj結尾的類,并不是一個正經的 Java 類,所以切面不到,也根本沒有對應的 class 文件。

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

AspectJ,簡稱 AJ 我自己說的

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

接下來我們就來聊聊關于這個東西怎么使用,別再被 .aj 騙了。

1. 安裝 AspectJ

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

下載完成安裝;

  • 雙擊安裝
  • 命令安裝 java -jar aspectj-1.9.4.jar
  • 配置說明:沒有配置,傻瓜式下一步就可以了

默認配置安裝完成以后會在C盤創建出一個文件夾 C:\aspectj1.9,包括:bin、doc、lib等,后面我們就會使用到這些內容。

2. AspectJ 插件

在專業版 IDEA 中開發 AspectJ,需要安裝以下兩個插件:

Spring AOP/@AspectJ

AspectJ Support

3. 添加依賴 aspectjrt.jar

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

在工程上鼠標右鍵,點擊 Open Module Setting 打開 Project Structure

點擊 Libraries 選項卡,和上面的 + 號,創建 New Project Library

選擇 C:\aspectj1.9\lib\aspectjrt.jar路徑,點擊即可配置完成

4. 配置AspectJ編譯器

IDEA 默認使用 javac 編譯器,這里需要配置 AspectJ 的編譯器 ajc,在 IDEA 中做相應配置。

打開 IDEA -> File -> Settings對話

選擇 Build,Execution,Deployment -> Compiler -> Java Compiler

Use complier:選擇 Ajc

在 Path to aspectjtools.jar里配置路徑C:\aspectj1.9\lib\aspectjtools.jar

5. 案例測試

創建 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 類的正確打開方式,關于 Aspect 的使用也可以嘗試搞搞,此篇還只是關于此類切面寫法的一個入門。

四、總結

你的代碼越粗獷、越豪放、越騷氣,幾乎你遇到的問題也是越多的,可能就是因為沒有遵守一定的研發執行規范,所以遇到的這些有點傻的問題,幾乎會浪費掉你一個上午或者一天。

但有些時候如果你能認真對待你弄出來的bug,深入分析下它是如何產生的,并把它復現出來一點點深入研究下,可能也會得到意想不到的收獲,也說不定。所以凡是認真,凡事沒有壞事。

關于切面、關于源碼、關于開發,可能并不應該只注重于功能實現,甚至有時候要想辦法逃離日復一日沒有成長的工作內容。多在那些有價值的技術上下功夫,那你的收獲也是最多的。?

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2021-04-22 07:47:47

JavaJDKMYSQL

2024-05-20 08:25:55

2021-10-29 11:45:26

Python代碼Python 3.

2025-05-19 10:04:48

2023-05-17 00:22:15

2022-04-06 08:47:03

Dubbo服務協議

2021-04-28 14:31:35

Dubbo接口日志

2021-06-02 08:00:57

WebAsyncTas項目異步

2020-05-18 08:42:23

CSS背景圖像前端開發

2022-05-16 08:42:26

Pandasbug

2018-01-29 21:56:28

Bug程序程序員

2023-02-26 01:02:22

2021-12-29 19:20:41

數據GitHub服務器

2024-10-23 16:11:07

調試bug定位

2021-09-13 08:41:52

職場互聯網自閉

2020-04-01 08:40:44

Vue.jsweb開發

2024-06-03 11:43:55

2016-12-14 10:00:44

數據結構編譯器

2017-10-10 15:14:23

BUGiOS 11蘋果

2020-06-09 08:05:11

Android 代碼操作系統
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国外成人免费视频 | 国产传媒在线播放 | 91文字幕巨乱亚洲香蕉 | 国产精品免费在线 | 北条麻妃一区二区三区在线观看 | 国产永久免费 | 美国一级毛片a | 免费在线观看成年人视频 | 亚洲毛片一区二区 | 久久亚洲国产精品 | 午夜一区二区三区在线观看 | 国产羞羞视频在线观看 | 欧美一区二区三区的 | 黄视频网址 | 国产精品成人一区二区三区 | 四虎午夜剧场 | 九色国产| 色播视频在线观看 | 中文字字幕一区二区三区四区五区 | 婷婷色在线播放 | 欧美αv| 九七午夜剧场福利写真 | 99re视频在线观看 | 99精品免费久久久久久日本 | 亚洲精选久久 | 天天操,夜夜爽 | 在线观看中文字幕亚洲 | 亚洲www. | 免费国产视频 | 一区二区av | 精品一级电影 | 欧美一区二区大片 | 日韩影音| 青久草视频| 国产99久久精品一区二区永久免费 | 伊人精品国产 | 一区二区三区四区在线视频 | 国产欧美在线播放 | 日韩一区二区免费视频 | 91精品国产91久久久久青草 | 久久久av中文字幕 |