日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

手写自定义注解实现思路

發布時間:2024/4/13 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 手写自定义注解实现思路 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

我在這邊問一下大家,你們說一下,我們現在想怎么樣呢,這個時候大家記住一點,我們進入到正題,我們手寫Spring的事務注解,在這邊寫一下,手寫Spring的事務注解,既然手寫的情況下,在這邊我們假設,記住不是Spring里面的,是我們自己定義的,定義一個事務注解叫做什么,@ExtTransanction表示我們自定義出來的,待會只要加上我們自己定義的注解之后,他就能實現Spring自帶的@Transaction一樣功能,這個時候我們問一下大家,你們說一下思路是怎樣的,你們要知道思路,寫一個項目要有思路的,你們想想怎么做,環繞通知是吧,我們寫一個步驟,你們想想第一步干嘛,是不是要定義一個注解,第二步干嘛,是不是要封裝手動事務,這個我們昨天已經封裝好了,這一步我們已經不用做了,到第三步的時候,我怎么知道這個方法中有沒有加注解,然后我怎么處理呢,第三步就難了,掃包怎么掃包呢,你們想想,具體如何掃包,這個比較難啊,我怎么知道這個注解就有這個權限功能呢,比如這個時候想的比較好,com.learn.service,現在只要在com.learn.service這下面,加上@ExtTransaction注解之后,那么會怎么樣呢,我們注解自動就會有效,那么具體如何掃包,這就是個難題,怎么做,代理設計模式,利用AOP就可以,具體步驟怎么樣呢,這個是比較難的,具體如何掃包,首先定義一個事務的AOP,定義這個AOP的時候,這就是關鍵,如果我們想定義一個事務掃包的AOP,既然定義了AOP掃包之后,AOP就可以具體定義掃描哪些方法,那么到了第四步的時候,怎么做呢,攔截方法的時候,使用反射技術判斷該方法上是否有事務注解,如果有的話,就開啟事務,沒有的話,就不開啟事務,這個思路里不理解,什么意思,我們待會寫個AOP出來,設置我們的權限,事務注解權限,在哪些范圍,就可以具體定位攔截到哪些方法,我們通過AOP攔截到這些方法之后,然后通過反射技術判斷該方法上是否有事務注解,如果有的話,就開啟事務,如果沒有的話就不開啟事務,是不是這樣的,這個思路明不明白,聽明白了嗎,我們昨天定義了一個注解,傳入切入點的時候發現沒有,可以獲取到一個方法的,我們還是在這邊做,我們是寫框架的,不是寫基本的代碼,那在這邊我再重復一下這個思路,第一步我們肯定要定義一下這個注解出來,事務注解,第二個干嘛呢,相當于手動封轉一個事務,昨天已經講了,然后第三步具體如何掃包,我們定義一個事務的掃包AOP,具體定義攔截到哪些方法,攔截某些方法的時候,使用反射技術判斷一下,方法上是否有事務注解,如果有事務注解的話就開始事務,沒有的話就不開啟事務,沒有什么難的,就這個思路,你們再看源碼,源碼也是這樣實現出來的,他寫的可能比我還復雜,他用了很多設計模式的,你們如果實在覺得有點繞的情況下,這個確實是很底層

?

總結

以上是生活随笔為你收集整理的手写自定义注解实现思路的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。