動態代理有幾種方式,可以借助Mybatis-plus里面的檢驗動態類

動態代理有很多的分類;

1、JDK原生的動態代理;

2、Spring實現的基于cglib里面的工廠實例化對象;

3、基于原生的cglib造出來的對象

4、基于字節碼的反編譯:assistant

具體的實現類參考:


public final class ClassUtils {private static final char PACKAGE_SEPARATOR = '.';private static final List<String> PROXY_CLASS_NAMES = Arrays.asList("net.sf.cglib.proxy.Factory", 
"org.springframework.cglib.proxy.Factory","javassist.util.proxy.ProxyObject", "org.apache.ibatis.javassist.util.proxy.ProxyObject");private ClassUtils() {}public static boolean isProxy(Class<?> clazz) {if (clazz != null) {Class[] var1 = clazz.getInterfaces();int var2 = var1.length;for(int var3 = 0; var3 < var2; ++var3) {Class<?> cls = var1[var3];if (PROXY_CLASS_NAMES.contains(cls.getName())) {return true;}}}return false;}public static Class<?> getUserClass(Class<?> clazz) {return isProxy(clazz) ? clazz.getSuperclass() : clazz;}public static Class<?> getUserClass(Object object) {Assert.notNull(object, "Error: Instance must not be null", new Object[0]);return getUserClass(object.getClass());}public static <T> T newInstance(Class<T> clazz) {try {Constructor<T> constructor = clazz.getDeclaredConstructor();constructor.setAccessible(true);return constructor.newInstance();} catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException | InstantiationException var2) {throw ExceptionUtils.mpe("實例化對象時出現錯誤,請嘗試給 %s 添加無參的構造方法", var2, new Object[]{clazz.getName()});}}public static Class<?> toClassConfident(String name) {try {return Class.forName(name);} catch (ClassNotFoundException var2) {throw ExceptionUtils.mpe("找不到指定的class!請僅在明確確定會有 class 的時候,調用該方法", var2, new Object[0]);}}public static String getPackageName(Class<?> clazz) {Assert.notNull(clazz, "Class must not be null", new Object[0]);return getPackageName(clazz.getName());}public static String getPackageName(String fqClassName) {Assert.notNull(fqClassName, "Class name must not be null", new Object[0]);int lastDotIndex = fqClassName.lastIndexOf(46);return lastDotIndex != -1 ? fqClassName.substring(0, lastDotIndex) : "";}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/41581.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/41581.shtml
英文地址,請注明出處:http://en.pswp.cn/news/41581.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【JVM】對String::intern()方法深入詳解(JDK7及以上)

文章目錄 1、什么是intern&#xff1f;2、經典例題解釋例1例2例3 1、什么是intern&#xff1f; String::intern()是一個本地方法&#xff0c;它的作用是如果字符串常量池中已經包含一個等于此String對象的字符串&#xff0c;則返回代表池中這個字符串的String對象的引用&#…

Java開源項目mall學習筆記(1)——項目初始化

一、學習聲明與項目介紹 該筆記是記錄學習開源項目mall過程的文檔筆記&#xff0c;完全原創&#xff0c;轉載請聲明。同時也對開源項目的作者表示感謝&#xff01; mall: &#x1f525; mall項目是一套基于 SpringBoot Vue uni-app 實現的電商系統&#xff0c;包括前臺商城項…

編譯鴻蒙codelabs安裝時報錯

學習鴻蒙ArkTS時編譯codelabs樣例代碼&#xff0c;發現編譯完成報錯。目前鴻蒙的資料比較少&#xff0c;且官方文檔路徑很深&#xff0c;遂記錄下來&#xff0c;以資來者。 error: failed to start ability. Error while Launching activity修改module.json5中的exported為tru…

ArcGIS 利用cartogram插件制作變形地圖

成果圖 注&#xff1a;本圖數據并不完全對&#xff0c;只做為測試用例 操作 首先需要下載一個插件cartogram 下載地址在這里 https://www.arcgis.com/home/item.html?idd348614c97264ae19b0311019a5f2276 下載完畢之后解壓將Cartograms\HelpFiles下的所有文件復制到ArcGIS…

ffmpeg的使用

1、ffmpeg的安裝 # 安裝wget yum -y install wget # 安裝ffmpeg壓縮包 wget --no-check-certificate https://www.johnvansickle.com/ffmpeg/old-releases/ffmpeg-4.0.3-64bit-static.tar.xz # 解壓 tar -xJf ffmpeg-4.0.3-64bit-static.tar.xz # 進入目錄 cd ffmpeg-4.0.3-64…

【Git】(二)分支

1、創建分支 已存在主分支master&#xff0c;現在需要創建v1.0的版本&#xff0c;一般直接在web頁面操作。 v1.0分支&#xff0c;基線master&#xff0c;稱為項目分支。 假如&#xff0c;v1.0項目存在兩個項目成員sunriver2000和snow&#xff0c;一般還會再針對個人創建個人…

nodejs+vue+elementui學生檔案信息管理系統_06bg9

利用計算機網絡的便利&#xff0c;開發一套基于nodejs的大學生信息管理系統&#xff0c;將會給人們的生活帶來更多的便利&#xff0c;而且在經濟效益上&#xff0c;也會有很大的便利!這可以節省大量的時間和金錢。學生信息管理系統是學校不可缺少的一個環節&#xff0c;其內容直…

說一下什么是tcp的2MSL,為什么客戶端在 TIME-WAIT 狀態必須等待 2MSL 的時間?

1.TCP之2MSL 1.1 MSL MSL:Maximum Segment Lifetime報文段最大生存時間&#xff0c;它是任何報文段被丟棄前在網絡內的最長時間 1.2為什么存在MSL TCP報文段以IP數據報在網絡內傳輸&#xff0c;而IP數據報則有限制其生存時間的TTL字段&#xff0c;并且TTL的限制是基于跳數 1.3…

[高光譜]PyTorch使用CNN對高光譜圖像進行分類

項目原地址&#xff1a; Hyperspectral-Classificationhttps://github.com/eecn/Hyperspectral-ClassificationDataLoader講解&#xff1a; [高光譜]使用PyTorch的dataloader加載高光譜數據https://blog.csdn.net/weixin_37878740/article/details/130929358 一、模型加載 在…

使用JMeter創建數據庫測試

好吧&#xff01;我一直覺得我不聰明&#xff0c;所以&#xff0c;我用最詳細&#xff0c;最明了的方式來書寫這個文章。我相信&#xff0c;我能明白的&#xff0c;你們一定能明白。 我的環境&#xff1a;MySQL&#xff1a;mysql-essential-5.1.51-win32 jdbc驅動&#xff1a;…

mysql 03.查詢(重點)

先準備測試數據&#xff0c;代碼如下&#xff1a; -- 創建數據庫 DROP DATABASE IF EXISTS mydb; CREATE DATABASE mydb; USE mydb;-- 創建student表 CREATE TABLE student (sid CHAR(6),sname VARCHAR(50),age INT,gender VARCHAR(50) DEFAULT male );-- 向student表插入數據…

PHP 公交公司充電樁管理系統mysql數據庫web結構apache計算機軟件工程網頁wamp

一、源碼特點 PHP 公交公司充電樁管理系統是一套完善的web設計系統&#xff0c;對理解php編程開發語言有幫助&#xff0c;系統具有完整的源代碼和數據庫&#xff0c;系統主要采用B/S模式開發。 源碼下載 https://download.csdn.net/download/qq_41221322/88220946 論文下…

【面試問題】當前系統查詢接口需要去另外2個系統庫中實時查詢返回結果拼接優化思路

文章目錄 場景描述優化思路分享資源 場景描述 接口需要從系統1查詢數據&#xff0c;查出的每條數據需要從另一個系統2中再去查詢某些字段&#xff0c; 比如&#xff1a;從系統1中查出100條數據&#xff0c;每條數據需要去系統2中再去查詢出行數據&#xff0c;可能系統1一條數…

socks5 保障網絡安全與爬蟲需求的完美融合

Socks5代理&#xff1a;跨足網絡安全和爬蟲領域的全能選手 Socks5代理作為一種通用的網絡協議&#xff0c;為多種應用場景提供了強大的代理能力。它不僅支持TCP和UDP的數據傳輸&#xff0c;還具備更高級的安全特性&#xff0c;如用戶身份驗證和加密通信。在網絡安全中&#xf…

蘋果手機批量刪除聯系人的2個方法,請查收!

【想要清理通訊錄里的“僵尸號”&#xff0c;但是突然發現手機不能批量刪除。一個一個刪除太麻煩了&#xff0c;有什么辦法可以一次性多刪幾個人嗎&#xff1f;】 小編想問問果粉們平時都是怎么刪除聯系人的&#xff1f;特別是要刪除多個聯系人的時候&#xff0c;大家還是選擇…

matlab保存圖片

僅作為記錄&#xff0c;大佬請跳過。 文章目錄 用界面中的“另存為”用saveas 用界面中的“另存為” 即可。 參考 感謝大佬博主文章&#xff1a;傳送門 用saveas 必須在編輯器中的plot之后用saveas&#xff08;也就是不能在命令行中單獨使用——比如在編輯器中plot&#xf…

神經網絡基礎-神經網絡補充概念-46-指數加權平均的偏差修正

由來 指數加權平均&#xff08;Exponential Moving Average&#xff0c;EMA&#xff09;在初始時可能會受到偏差的影響&#xff0c;特別是在數據量較小時&#xff0c;EMA的值可能會與實際數據有較大的偏差。為了修正這種偏差&#xff0c;可以使用偏差修正方法&#xff0c;通常…

基于平臺的城市排水泵站管理系統設計

安科瑞 耿敏花 近年來我國城市內澇災害頻發&#xff0c;造成人員傷亡以及經濟損失嚴重&#xff0c;嚴重威脅著城市的安全。數據顯示&#xff0c;2015-2018年我國平均每年受淹或發生內澇城市的數量約占我國城市數量的1/5&#xff1b;人民生命財產也損失嚴重&#xff0c;據統計&a…

基于YOLOv5n/s/m不同參數量級模型開發構建茶葉嫩芽檢測識別模型,使用pruning剪枝技術來對模型進行輕量化處理,探索不同剪枝水平下模型性能影響【續】

這里主要是前一篇博文的后續內容&#xff0c;簡單回顧一下&#xff1a;本文選取了n/s/m三款不同量級的模型來依次構建訓練模型&#xff0c;所有的參數保持同樣的設置&#xff0c;之后探索在不同剪枝處理操作下的性能影響。 在上一篇博文中保持30的剪枝程度得到的效果還是比較理…

C++ 學習系列3 -- 函數壓棧與出棧

在C中&#xff0c;函數壓棧&#xff08;函數調用&#xff09;和出棧&#xff08;函數返回&#xff09;是函數調用過程中的兩個關鍵步驟。下面將逐步解釋這兩個過程&#xff1a; 一 函數壓棧與出棧過程簡介 函數壓棧&#xff08;函數調用&#xff09;的過程如下&#xff1a; …