日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

spring中的jdk动态代理(代码步骤)

發布時間:2025/3/19 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spring中的jdk动态代理(代码步骤) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

UserDao.java接口:

package com.liu.jdk;public interface UserDao {public void addUser();public void deleteUser();}

UserDaoImpl.java實現類:

package com.liu.jdk;//目標類 public class UserDaoImpl implements UserDao {@Overridepublic void addUser() {// TODO Auto-generated method stubSystem.out.println("添加方法");}@Overridepublic void deleteUser() {// TODO Auto-generated method stubSystem.out.println("刪除方法");}}

MyAspect.java切面類:

package com.liu.aspect; //切面類:可以存在多個通知advice(即增強方法) public class MyAspect {public void chek() {System.out.println("模擬檢查權限....");}public void log() {System.out.println("模擬記錄日志....");}}

jdkProxy.java代理類:

package com.liu.jdk;import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy;import com.liu.aspect.MyAspect;//jdk的代理類 public class jdkProxy implements InvocationHandler {//聲明目標類的接口private UserDao userDao;//創建代理的方法public Object create(UserDao userDao) {this.userDao = userDao;//1.加載類加載器ClassLoader claasLoader = jdkProxy.class.getClassLoader();//2.被代理的對象實現所有的接口Class<?>[] clazz = userDao.getClass().getInterfaces();//3.使用代理類,進行增強 返回后是代理的對象return Proxy.newProxyInstance(claasLoader, clazz, this);}//所有動態代理類的方法調用,都交給invoke()方法去處理//proxy 被代理后的對象//method 將要被執行的方法信息(反射)//args 執行方法時需要的參數@Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {// TODO Auto-generated method stub//聲明切面MyAspect myAspect = new MyAspect();//前增強myAspect.chek();//在目標類上調用方法 并傳入參數Object obj = method.invoke(userDao, args);//后增強myAspect.log();return obj;}}

JdkTest.java測試類:

package com.liu.jdk;import com.liu.aspect.MyAspect;public class JdkTest {public static void main(String[] args) {//創建代理對象jdkProxy jdk = new jdkProxy();//創建目標對象UserDao userDao = new UserDaoImpl();//從代理對象中獲取增強后的目標對象UserDao userDao1 = (UserDao) jdk.create(userDao);userDao1.addUser();userDao1.deleteUser();}}

運行結果:

模擬檢查權限.... 增強方法 模擬記錄日志.... 模擬檢查權限.... 刪除方法 模擬記錄日志....

https://blog.csdn.net/weixin_45151960/article/details/104603603 CGLIB代理

總結

以上是生活随笔為你收集整理的spring中的jdk动态代理(代码步骤)的全部內容,希望文章能夠幫你解決所遇到的問題。

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