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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

动态代理学习小案例

發布時間:2025/7/14 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 动态代理学习小案例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1 package edu.nf.utils; 2 3 import edu.nf.dao.UserDao; 4 import edu.nf.dao.UserInvocationhandler; 5 import org.apache.ibatis.session.SqlSession; 6 7 import java.lang.reflect.InvocationHandler; 8 import java.lang.reflect.Proxy; 9 10 /** 11 * 代理工具 12 * @Author LQY 13 * @Date 2018/10/15 14 */ 15 public class ProxyUtil { 16 /** 17 * 在使用mybatis前提下,獲取操作數據庫dao的實現類的代理對象 18 * @param clazz dao接口的class對象 19 * @return 20 */ 21 public static Object getProxy(Class<?> clazz){ 22 SqlSession sqlSession = MyBatisUtil.getSqlSession(); 23 Object dao = sqlSession.getMapper(clazz); 24 try { 25 InvocationHandler handler = new DaoInvocationhandler(dao); 26 return Proxy.newProxyInstance(clazz.getClassLoader(), dao.getClass().getInterfaces(), handler); 27 } catch (Exception e) { 28 e.printStackTrace(); 29 } 30 return null; 31 } 32 } package edu.nf.dao;import edu.nf.utils.MyBatisUtil; import org.apache.ibatis.session.SqlSession;import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method;/*** 回調處理器* @Author LQY* @Date 2018/10/15*/ public class DaoInvocationhandler implements InvocationHandler{private Object target ;public UserInvocationhandler(Object target){this.target = target;}@Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {Object obj = null;SqlSession sqlSession = MyBatisUtil.getSqlSession();try {obj = method.invoke(target,args);//提交事務 sqlSession.commit();} catch (Exception e) {e.printStackTrace();//回滾事務 sqlSession.rollback();}finally {//釋放SqlSession sqlSession.close();}return obj;} } View Code

代理類可以在運行時創建全新的類 。 這樣的
代理類能夠實現指定的接口
。 尤其是 , 它具有下列方法 :
? 指定接口所需要的全部方法 。
? Object
類中的全部方法 , 例如 , toString 、 equals 等

然而
, 不能在運行時定義這些方法的新代碼 。 而是要提供一個調用處理器 ( invocation
handler ) 。 調用處理器是實現了 InvocationHandler 接口的類對象 。 在這個接口中只有一個方法 :
Object invoke ( Object proxy , Method method , Object □ args )
無論何時調用代理對象的方法
, 調用處理器的
invoke 方法都會被調用 , 并向其傳遞
Method 對象和原始的調用參數 。 調用處理器必須給出處理調用的方式 。

?

?

要使用上面這個小工具必須要有這兩個類。

學習動態代理的小案例工具,寫得不好請多多指教!

轉載于:https://www.cnblogs.com/nisiweiLIQIYONG/p/9797081.html

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的动态代理学习小案例的全部內容,希望文章能夠幫你解決所遇到的問題。

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