隨筆 - 6  文章 - 129  trackbacks - 0
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿(14)

          隨筆檔案(6)

          文章分類(467)

          文章檔案(423)

          相冊

          收藏夾(18)

          JAVA

          搜索

          •  

          積分與排名

          • 積分 - 827218
          • 排名 - 49

          最新評論

          閱讀排行榜

          評論排行榜

           通過面向接口編程實現日志輸出
          (1)建立一個接口TimeBookInterface,代碼如下
          /*******TimeBookInterface.java********/
          package com.gc.dao;

          public interface TimeBookInterface{

           public void doAuditing(String name);
          }
          (2)編寫接口實現類,代碼如下
          /*******TimeBook.java********/
          package com.gc.dao.impl;

          public class TimeBook implements TimeBookInterface{

           public void doAuditing(String name){
           
            //審查數據的相關程序
            ......
           }
          }
          (3)編寫一個代理類,用來實現日志輸出,其代碼如下
          /*******TimeBookProxy.java********/
          package com.gc.dao.impl;

          import org.apache.log4j.Level;
          import org.apache.log4j.Logger;

          public class TimeBookProxy{

           private Logger logger = Logger.getLogger(this.getClass().getName());
           private TimeBookInterface timeBookInterface;
           public TimeBookProxy(TimeBookInterface timeBookInterface){
           
            this.timeBookInterface = timeBookInterface;
           }
           //實際業務處理
           public void doAuditing(String name){
           
            logger.log(Level.INFO,name+"開始審核數據");
            timeBookInterface.doAuditing(name);
            logger.log(Level.INFO,name+"審核數據結束");
           }
          }
          (4)編寫測試代碼類
          ......
          public static void main(String[] args){
          //針對接口進行編程
           TimeBookProxy timeBookProxy = new TimeBookProxy(new TimeBook());
           timeBookProxy.doAuditing("張三");
          }

           使用java的代理機制進行日志輸出
          (1)編寫一個日志信息的代理類LogProxy,這個代理類實現了接口InvocationHandler,
           可以對任何接口實現日志信息的輸出.其代理如下
          package com.gc.dao;

          import java.lang.reflect.InvocationHandler;
          import java.lang.reflect.Method;
          import java.lang.reflect.Proxy;

          import org.apache.log4j.Level;
          import org.apache.log4j.Logger;
          //代理類實現了接口InvocationHandler
          public class LogProxy implements InvocationHandler{

           private Logger logger = Logger.getLogger(this.getClass().getName());
           private Object delegate;
           //綁定對象
           public Object bing(Object delegate){
            this.delegate = delegate;
            return Proxy.new ProxyInstance(delegate.getClass().getClassLoader(),delegate.getClass().getInterfaces(),this);
           }
           //針對接口編程
           public Object invoke(Object proxy,Mehtod method,Object[] args)throws Throwable{
           
            Object result = null;
            try{
            //在方法調用前后進行日志輸出
             logger.log(Level.INFO,args[0] + "開始審核數據");
             result = method.invoke(delegate,args);
             logger.log(Level.INFO,args[0] + "審核數據結束");
            }
            catch(Exception e){
             logger.log(Level.INFO,e.toString());
            }
            return result;
           }
          }
          (2)建立一個接口TimeBookInterface,代碼如下
          /*******TimeBookInterface.java********/
          package com.gc.dao;

          public interface TimeBookInterface{

           public void doAuditing(String name);
          }
          (3)編寫接口實現類,代碼如下
          /*******TimeBook.java********/
          package com.gc.dao.impl;

          public class TimeBook implements TimeBookInterface{

           public void doAuditing(String name){
           
            //審查數據的相關程序
            ......
           }
          }
          (4)編寫測試代碼類
          ......
          public static void main(String[] args){
           //實現了對日志類的重用
           LogProxy logProxy = new LogProxy();
           TimeBookInterface timeBookInterface = (TimeBookInterface)logProxy.bind(new TimeBook());
           timeBookProxy.doAuditing("張三");
          }
          代碼來自spring從入門到精通一書



          posted on 2007-08-25 14:21 Ke 閱讀(578) 評論(0)  編輯  收藏 所屬分類: spring
          主站蜘蛛池模板: 肥西县| 临颍县| 潍坊市| 都兰县| 浦东新区| 白河县| 翼城县| 青州市| 确山县| 临西县| 勃利县| 杭锦后旗| 景德镇市| 上高县| 丹东市| 长治市| 宁安市| 墨江| 尉犁县| 吐鲁番市| 南宫市| 石棉县| 吉首市| 甘南县| 永德县| 双辽市| 贡山| 将乐县| 金沙县| 桐乡市| 广汉市| 庄河市| 宁乡县| 观塘区| 土默特右旗| 大埔区| 高尔夫| 察哈| 黄大仙区| 平乡县| 嘉义市|