国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

54_55總結分析動態代理類的設計原理與結構

2019-11-14 22:53:36
字體:
來源:轉載
供稿:網友
54_55總結分析動態代理類的設計原理與結構

log()是系統日志,可以利用切面編程將他模塊化,熱插拔的插入到invoke方法周圍

 

 

 

 

 

 

針對之前的代碼,應該抽取黃色部分出來,并模塊化

 

 

 

 

目標抽取成為一個參數

final ArrayList target=new ArrayList();Collection PRoxy3 = (Collection) getProxy(target,new MyAdvice());

 

系統功能抽取成一個對象

public static Object getProxy(final Object target,final Advice advice) {    Object proxy3 = Proxy.newProxyInstance(            Collection.class.getClassLoader(),             new Class[]{Collection.class},             new InvocationHandler(){                @Override                public Object invoke(Object proxy, Method method,                        Object[] args) throws Throwable {                    advice.beforeMethod(method);                    Object reVal=method.invoke(target, args);                    advice.afterMethod(method);                    return reVal;                }            }        );    return proxy3;}

 

通知接口--契約

package com.itcast.day3;import java.lang.reflect.Method;public interface Advice {    public void beforeMethod(Method method);    public void afterMethod(Method method);}

 

契約的實現--通常是上班時使用Spring aop 時,工作量最大的工作

package com.itcast.day3;import java.lang.reflect.Method;public class MyAdvice implements Advice {    long beginTime=0;    @Override    public void beforeMethod(Method method) {        beginTime=System.currentTimeMillis();    }    @Override    public void afterMethod(Method method) {        long endTime=System.currentTimeMillis();        System.out.println(method.getName()+" running "+(endTime-beginTime));    }}

使用spring的aop時,只需干兩件事

1 配置Advice

2 配置 target


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 贵州省| 横峰县| 巴塘县| 台江县| 榕江县| 吉木乃县| 河池市| 嘉鱼县| 玉门市| 汾西县| 蕉岭县| 青阳县| 吴堡县| 赣榆县| 惠东县| 南丹县| 弥渡县| 两当县| 灵丘县| 沙洋县| 鹤山市| 鄢陵县| 龙州县| 江永县| 武宁县| 安阳县| 东光县| 嘉善县| 定襄县| 邵阳市| 长泰县| 新和县| 商南县| 察哈| 永康市| 峨眉山市| 大关县| 盈江县| 丰顺县| 池州市| 普兰店市|