中文字幕在线一区二区在线,久久久精品免费观看国产,无码日日模日日碰夜夜爽,天堂av在线最新版在线,日韩美精品无码一本二本三本,麻豆精品三级国产国语,精品无码AⅤ片,国产区在线观看视频

      Java動態代理的解析

      時間:2024-09-28 05:12:53 JAVA認證 我要投稿
      • 相關推薦

      關于Java動態代理的解析

        動態代理類是位于Java.lang.reflect包下的Interface InvocationHandler。下面小編準備了關于Java動態代理的解析,提供給大家參考!

        眾所周知,JDK的動態代理模式必須實現接口。

        以下面的源碼為例:

        接口一:

        public interface ActionInterface {

        void doSelf(String str);

        String getType();

        }

        接口二:

        public interface InterruupIntf {

        void interrup();

        }

        實現類:

        public class MyselfImpl implements ActionInterface, InterruupIntf {

        public String getType() {

        String type = "公用部門";

        System.out.println(type);

        return type;

        }

        public void doSelf(String str) {

        System.out.println("業務實現類: " + str + " !");

        }

        public void interrup() {

        System.out.println("發呆三分鐘!");

        }

        }

        動態代理需要反射,

        * 必須要實現InvocationHandler接口

        * 能夠對所有的方法進行代理

        public class MyInvocationHandler implements InvocationHandler {

        private Object obj;

        /**

        * 通過構造方法來設置被代理的對象

        * @param obj

        */

        public MyInvocationHandler(Object obj) {

        this.obj = obj;

        }

        /**

        * 動態代理需要反射

        *

        */

        public Object invoke(Object proxy, Method method, Object[] args)

        throws Throwable {

        System.out.println("+++++++++++調用業務方法之前做其他事情");

        Object returnObject = method.invoke(obj, args);

        System.out.println("+++++++++++調用業務方法之前做其他事情");

        return returnObject;

        }

        /**

        * 測試函數

        * 動態代理對所有的代理類都進行了攔截

        * @throws NoSuchMethodException

        * @throws InvocationTargetException

        * @throws IllegalAccessException

        * @throws InstantiationException

        * @throws SecurityException

        * @throws IllegalArgumentException

        */

        public static void main(String[] args) throws InterruptedException,

        IllegalArgumentException, SecurityException,

        InstantiationException, IllegalAccessException,

        InvocationTargetException, NoSuchMethodException {

        //實現業務邏輯的類

        MyselfImpl muSelf = new MyselfImpl();

        //JDK創建的動態邏輯類,調用上面的構造函數注入

        MyInvocationHandler myInvocation = new MyInvocationHandler(muSelf);

        /*

        Class proxyClass = Proxy.getProxyClass(

        MyselfImpl.class.getClassLoader(), MyselfImpl.class.getInterfaces());

        //建業務邏輯類的動態代理類

        Object proxy = proxyClass.getConstructor(

        new Class[] { InvocationHandler.class }).newInstance(

        new MyInvocationHandler(new MyselfImpl())); */

        //建業務邏輯類的動態代理類

        Object proxy = Proxy.newProxyInstance(MyselfImpl.class.getClassLoader(), MyselfImpl.class.getInterfaces(), myInvocation);

        //業務類自己調用運行代理對象

        ActionInterface testIntf = (ActionInterface) proxy;

        testIntf.doSelf("我要做業務了!");

        testIntf.getType();

        InterruupIntf intIntf = (InterruupIntf) proxy;

        intIntf.interrup();

        }

        }

        運行最后一個類的MAIN函數,控制臺輸出結果如下:

        +++++++++++調用業務方法之前做其他事情

        業務實現類: 我要做業務了! !

        +++++++++++調用業務方法之前做其他事情

        +++++++++++調用業務方法之前做其他事情

        公用部門

        +++++++++++調用業務方法之前做其他事情

        +++++++++++調用業務方法之前做其他事情

        發呆三分鐘!

        +++++++++++調用業務方法之前做其他事情

        看到結果了。

        JDK的動態代理,對MyselfImpl所有方法都進行了攔截,在調用真正的業務類方法之前之后都插入了代碼,這就是JDK的動態代理。其實SPRING的AOP思想的基本原理也是這個,但是它寫的比較負責,而且比較優秀。

      【Java動態代理的解析】相關文章:

      Java動態代理實現AOP的方法07-22

      Java腳本動態用法06-11

      解析動態NAT配置09-24

      Java中的動態代碼編程06-27

      Java的內存劃分全解析08-02

      java命令行參數解析201608-12

      計算機二級JAVA考點解析10-12

      關于計算機二級JAVA考點解析07-14

      Java與Java web的區別08-10

      2017年計算機二級JAVA考點解析08-03

      主站蜘蛛池模板: 亚洲无码vr| 中文字幕无线精品亚洲乱码一区| 国产精品欧美成人片| 亚洲av偷拍一区二区三区| 久久精品韩国日本国产| 九九在线精品视频xxx| 府谷县| 亚洲av成人一区二区三区网址| 国产成人自产拍免费视频| 日韩高清av一区二区| 麻豆av一区二区天堂| 苍南县| 平邑县| 威远县| 新宾| 凤翔县| 香港| 黑水县| 国产精选一区二区三区| 亚洲一区在线中文字幕| 免费人成网上在线观看网址| 亚洲国产高清美女在线观看| 国产精品一区二区日韩精品| 亚洲色四在线视频观看| 97成人精品视频在线播放| 熟女丝袜av一区二区三区四区| 亚洲一区二区情侣| 日韩av在线不卡一区二区三区| 污污污国产免费网站| av网页在线免费观看| 国产免费三级三级三级| 日韩人妻少妇一区二区三区| 看全色黄大黄大色免费久久| 日韩精品一区二区三区中文9| 国产免费激情小视频在线观看 | 一区二区久久精品66国产精品| 精品高清国产乱子伦| 日本精品久久性大片日本| 色综合色综合久久综合频道| 女同av在线观看网站| 广安市|