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

          常用鏈接

          留言簿(14)

          隨筆檔案(6)

          文章分類(467)

          文章檔案(423)

          相冊

          收藏夾(18)

          JAVA

          搜索

          •  

          積分與排名

          • 積分 - 827168
          • 排名 - 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
          主站蜘蛛池模板: 保康县| 灵丘县| 南宁市| 博野县| 雅安市| 乡宁县| 杂多县| 武鸣县| 辽阳市| 翁源县| 乌兰县| 厦门市| 寿光市| 易门县| 宽城| 余江县| 潢川县| 荔浦县| 平利县| 攀枝花市| 开封县| 兰溪市| 盖州市| 桑日县| 河源市| 丹阳市| 观塘区| 沾益县| 福清市| 桃园县| 花垣县| 图片| 巴塘县| 常州市| 台南县| 化德县| 微山县| 西安市| 沙河市| 五原县| 宜黄县|