国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

一個(gè)Bug,讓我發(fā)現(xiàn)了Java界的.AJ(錐)!

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

[[394911]]

本文轉(zhuǎn)載自微信公眾號(hào)「bugstack蟲洞棧」,作者小傅哥 。轉(zhuǎn)載本文請(qǐng)聯(lián)系bugstack蟲洞棧公眾號(hào)。

目錄

  • 一、前言
  • 二、滿腦子都是騷操作
    • 1. 遇到問題
    • 2. 發(fā)現(xiàn)問題
    • 3. 排查問題
  • 三、如何正確使用 Aspect 的 .aj 類
    • 1. 安裝 AspectJ
    • 2. AspectJ 插件
    • 3. 添加依賴 aspectjrt.jar
    • 4. 配置AspectJ編譯器
    • 5. 案例測(cè)試
  • 四、總結(jié)
  • 五、系列推薦

一、前言

話我放這,踩過的坑越多頭發(fā)越少!

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

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

接下來我?guī)е蠹乙黄鹂纯词裁词强鞓沸乔?,他是怎么一頓騷操作讓切面攔截不到的!

二、滿腦子都是騷操作

1. 遇到問題

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

  • 最開始我大意了,讓謝飛機(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è)類能共存,如下:

  • 這就神奇了哈,我當(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 類!圖片

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)建切面的快捷操作,如圖;
  • 創(chuàng)建完成以后發(fā)現(xiàn)有點(diǎn)不對(duì),不是 class 類型的,是個(gè) aspect,于是他手動(dòng)把 aspect 改成了 class,
  • 所以,謝飛機(jī)實(shí)際創(chuàng)建出來的是一個(gè) aspect 的以 .aj 結(jié)尾的類,并不是一個(gè)正經(jīng)的 Java 類,所以切面不到,也根本沒有對(duì)應(yīng)的 class 文件圖片。

三、如何正確使用 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
  • 配置說明:沒有配置,傻瓜式下一步就可以了

默認(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

3. 添加依賴 aspectjrt.jar

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

在工程上鼠標(biāo)右鍵,點(diǎn)擊 Open Module Setting 打開 Project Structure

點(diǎn)擊 Libraries 選項(xiàng)卡,和上面的 + 號(hào),創(chuàng)建 New Project Library

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

4. 配置AspectJ編譯器

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

  • 打開 IDEA -> File -> Settings 對(duì)話
  • 選擇 Build,Execution,Deployment -> Compiler -> Java Compiler
  • Use complier:選擇 Ajc
  • 在 Path to aspectjtools.jar 里配置路徑 C:\aspectj1.9\lib\aspectjtools.jar

5. 案例測(cè)試

創(chuàng)建 Aspect 類

  1. public aspect DoAspect { 
  2.  
  3.     pointcut logPointcut():call(* ApiTest.hi(..)); 
  4.  
  5.     void around():call(void ApiTest.hi(..)){ 
  6.         System.out.println("call 開始..."); 
  7.         proceed(); 
  8.         System.out.println("call 結(jié)束..."); 
  9.     } 
  10.  
  11.     before(): logPointcut(){ 
  12.         System.out.println("方法執(zhí)行 before"); 
  13.     } 
  14.  
  15.     after(): logPointcut(){ 
  16.         System.out.println("方法執(zhí)行 after"); 
  17.     } 
  18.  

測(cè)試類

  1. public class ApiTest { 
  2.  
  3.     public void hi(){ 
  4.         System.out.println("Hi Aspect"); 
  5.     } 
  6.  
  7.     public static void main(String[] args) { 
  8.         ApiTest apiTest = new ApiTest(); 
  9.         apiTest.hi(); 
  10.     } 
  11.  

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

  1. call 開始... 
  2. 方法執(zhí)行 before 
  3. Hi Aspect 
  4. call 結(jié)束... 
  5. 方法執(zhí)行 after 
  6.  
  7. 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ù)上下功夫,那你的收獲也是最多的。

 

責(zé)任編輯:武曉燕 來源: bugstack蟲洞棧
相關(guān)推薦

2022-11-30 09:18:51

JavaMyBatisMQ

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服務(wù)協(xié)議

2021-06-02 08:00:57

WebAsyncTas項(xiàng)目異步

2021-04-28 14:31:35

Dubbo接口日志

2020-05-18 08:42:23

CSS背景圖像前端開發(fā)

2022-05-16 08:42:26

Pandasbug

2018-01-29 21:56:28

Bug程序程序員

2023-02-26 01:02:22

2024-10-23 16:11:07

調(diào)試bug定位

2021-12-29 19:20:41

數(shù)據(jù)GitHub服務(wù)器

2021-09-13 08:41:52

職場(chǎng)互聯(lián)網(wǎng)自閉

2020-04-01 08:40:44

Vue.jsweb開發(fā)

2016-12-14 10:00:44

數(shù)據(jù)結(jié)構(gòu)編譯器

2024-06-03 11:43:55

2017-10-10 15:14:23

BUGiOS 11蘋果

2020-06-09 08:05:11

Android 代碼操作系統(tǒng)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

久久99久久人婷婷精品综合 | 色婷婷综合久久久中字幕精品久久| 国产69精品久久99不卡| 欧美一区二区三区四区在线| 婷婷色在线资源| 亚洲精品国产a久久久久久| 伊人久久99| 在线观看免费一区二区| 欧美激情小视频| 樱花草涩涩www在线播放| 亚洲电影一级黄| 男人天堂网视频| 蜜桃视频第一区免费观看| 国产在线观看一区二区三区| 日韩在线观看一区二区三区| 亚洲成人999| 蜜桃成人在线视频| 中文字幕第一区| 奇米影视亚洲色图| 麻豆精品国产传媒mv男同| 成人在线视频福利| 亚洲人成亚洲精品| 欧美剧在线观看| 成人激情综合| 日韩av在线高清| 日本大片在线播放| 欧美一区二区在线免费观看| 深夜福利免费在线观看| 亚洲免费av高清| 99热在线观看免费| 国产亲近乱来精品视频| 日韩精品久久一区二区| 麻豆精品一区二区av白丝在线| 精品高清视频| 激情久久五月| 国产精华一区| 欧美va天堂| 97夜夜澡人人双人人人喊| 国产欧美一区二区三区精品观看 | 久久综合九色综合97_久久久| 亚洲欧洲国产精品久久| 噜噜噜躁狠狠躁狠狠精品视频| 国产精品一区在线播放| 在线视频观看日韩| 久久国产精品99久久久久久丝袜| 欧美另类视频| 国产精品一区视频| 久热精品在线| 日本丰满少妇黄大片在线观看| 久热成人在线视频| 99久久免费观看| 国产午夜亚洲精品午夜鲁丝片| 天堂中文视频在线| 亚洲精品国产一区二区三区四区在线| 黄色片久久久久| 久久精品视频免费| 欧美疯狂性受xxxxx另类| 人与动性xxxxx免费视频| 国产精品3区| 亚洲色图综合久久| 国产精品成人国产| 欧美精品一区在线播放| 成人精品毛片| 国产成人精品午夜| 国产综合自拍| 亚洲免费久久| 成人av电影免费观看| 激情视频综合网| 亚洲国产另类av| 国产精品一卡二卡三卡| 亚洲免费人成在线视频观看| 99久久999| 国产免费一区视频观看免费| 精品91久久久久| 亚洲av综合色区| 国产精品福利一区| 在线播放日本| 色七七影院综合| 日韩精品免费| 在线视频福利一区| 中文子幕无线码一区tr| 黄色视屏网站在线免费观看| 精品亚洲一区二区三区在线播放| 少妇精品在线| 产国精品偷在线| 99精品在线观看视频| 亚洲美女主播视频免费观看| 欧美一级夜夜爽| 久久91在线| 日韩av电影免费观看| 中文字幕 久热精品 视频在线 | 色吊丝在线永久观看最新版本| 在线不卡中文字幕| 日韩毛片网站| 97se视频在线观看| gogo大胆日本视频一区| 在线免费国产| 亚洲人成77777在线观看网| 欧美日韩123| 一区二区欧美日韩| 一区二区三区精密机械公司| 亚洲夜夜综合| 国产成人精品日本亚洲| 国产综合久久久久久久久久久久| 黄色成人av| 日韩小视频在线观看专区| 国产 日韩 欧美 综合 一区| 美脚丝袜一区二区三区在线观看| 91亚洲精品一区二区乱码| 欧美女v视频| 欧美日韩第一页| 蜜桃视频在线观看一区| 最新中文在线视频| 色久欧美在线视频观看| 好看的日韩av电影| 无限资源日本好片| 亚洲精品456在线播放狼人| 精品国产一区一区二区三亚瑟 | 91网站最新网址| av中文资源在线| 91精品国产成人www| 精品亚洲国产成人av制服丝袜| 精品一二三四| 欧美国产第一页| 免费欧美在线视频| 免费黄色在线视频网站| 久久久久久久久久久av| 免费黄色网页在线观看| 国产精品亚洲a| 日本一区二区视频在线| 91网址在线观看| 成人av在线天堂| 国产精品婷婷午夜在线观看| 欧美aa免费在线| 久久精品国产一区二区三区日韩| 一区二区三区小说| 亚洲人成777| 大地资源网在线观看免费官网| 欧美精品粉嫩高潮一区二区| 成人3d动漫在线观看| 亚洲一区日韩精品| 久久这里只有精品99| 国产精品中文欧美| 1区2区3区在线| 日韩久久在线| 91精品国产一区二区人妖| 欧美日韩 国产精品| 欧洲亚洲精品视频| 国产在线一区二区三区| 一区二区在线观看视频| 精品淫伦v久久水蜜桃| 国产高清视频网站| 久久久久国产精品免费| 久久久久久久久岛国免费| 日本综合视频| 亚洲 欧美 日韩 国产综合 在线| 亚洲欧美成人网| 狠狠狠色丁香婷婷综合激情| 久草在线中文最新视频| 永久免费精品视频网站| 亚洲国产精品va在看黑人| 毛片基地黄久久久久久天堂| 麻豆福利在线观看| 中文字幕av久久| 在线观看中文字幕亚洲| 99精品一区二区三区| 97色成人综合网站| 天天色综合6| 日韩美女主播视频| 五月天亚洲精品| 国模大胆一区二区三区| 免费av在线网址| 视频一区视频二区视频三区视频四区国产| 欧美一二三四区在线| 久久99国产乱子伦精品免费| 欧美男女交配| 国产精品333| 日本亚洲欧洲色α| 色综合天天综合色综合av| 亚洲激情午夜| 交100部在线观看| 虎白女粉嫩尤物福利视频| 久久久久女教师免费一区| 亚洲一区二区五区| 一区二区视频欧美| 色是在线视频| 欧美伦理片在线看| 日韩av在线高清| 国产中文一区二区| 亚洲欧美精品午睡沙发| 日韩精品中文字幕第1页| 国产原创av在线| 亚洲视频sss| 久久亚洲精品成人| 一区二区三区中文免费| 亚洲午夜黄色| 日韩成人影音| 缴情综合网五月天| av在线不卡观看| 亚洲免费小视频|