實(shí)現(xiàn)步驟:
          1.新建生成動(dòng)態(tài)代理對(duì)象類,實(shí)現(xiàn)java.lang.reflect.InvocationHandler接口。
          2.新建一個(gè)方法用與生成代理對(duì)象并返回對(duì)象。
          3.實(shí)現(xiàn)接口方法invoke,這也是切面處理的核心操作地。
          -------上層接口 
          public interface Service {
              
          void doService(String name);
          }

           -----接口實(shí)現(xiàn)
          public class ServiceImpl implements Service{

              @Override
              
          public void doService(String name ) {
                  System.out.println(
          "hello " + name);
              }


          }



           -------實(shí)現(xiàn)InvocationHandler接口的類
          public class ServiceDynamicProxy implements InvocationHandler {
              
          private Object targetObject ;
              
          //把要代理的類傳進(jìn)去
              public Object createProxy(Object targetObject){
                  
          this.targetObject = targetObject ;
                  
          return  Proxy.newProxyInstance(targetObject.getClass().getClassLoader(),
                                          targetObject.getClass().getInterfaces(), 
          this);
              }

              
          //invoke方法會(huì)自動(dòng)調(diào)用,切面處理
              @Override
              
          public Object invoke(Object proxy, Method method, Object[] args)
                      
          throws Throwable {
                  checkSecurity();
                  System.out.println(proxy.getClass().getName());
                  Object result 
          = null ;
                  result 
          = method.invoke(this.targetObject,args);
                  
          return result;
                  
              }

              
          public void checkSecurity(){
                  System.o ut.println(
          "check the security ");
              }


          }
          -------測(cè)試類


          public class DynamicProxyClient {
              
          public static void main(String[] args) {
                  ServiceDynamicProxy dynamicProxy 
          = new ServiceDynamicProxy();
                  Service service 
          = (Service)dynamicProxy.createProxy(new ServiceImpl());
                  service.doService(
          "xuyiyu");
              }

          }



          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           

          posts - 2, comments - 0, trackbacks - 0, articles - 0

          Copyright © 胥子

          主站蜘蛛池模板: 达日县| 佳木斯市| 乌兰浩特市| 朝阳县| 岱山县| 孝义市| 西和县| 新郑市| 武山县| 崇州市| 丰原市| 西丰县| 昌乐县| 金川县| 万荣县| 余姚市| 将乐县| 扶余县| 建德市| 呼和浩特市| 平遥县| 黄大仙区| 白朗县| 江北区| 诏安县| 高邑县| 同德县| 松滋市| 北票市| 呈贡县| 临朐县| 香格里拉县| 都昌县| 汉源县| 武清区| 佛山市| 吉木乃县| 鸡西市| 岳阳市| 八宿县| 太谷县|