JDK实现调用拦截器是如何执行的呢?那么我们就在这篇文章里向你介绍JDK实现调用拦截器的情况。

JDK完成动态署理调用阻拦器中的办法的进程是什么呢?

JDK完成调用拦截器浅析(java拦截器使用详解)  JDK实现 调用拦截器 第1张

JDK完成调用阻拦器之一:

完成接口的实例来生成署理,因而创立一个接口

interface person

  1. packagecn.edu.hld;
  2. publicinterfacePerson
  3. {
  4. publicvoidinfo();
  5. publicvoidrun();
  6. }

JDK完成调用阻拦器之二:

供给一个Person接口的完成类.

类PersonImpl .java

  1. packagecn.edu.hld;
  2. publicclassPersonImplimplementsPerson
  3. {
  4. publicvoidinfo()
  5. {
  6. //TODOAuto-generatedmethodstub
  7. System.out.println("我是thtwin");
  8. }
  9. publicvoidrun()
  10. {
  11. //TODOAuto-generatedmethodstub
  12. System.out.println("我想跑得快一些!");
  13. }
  14. }


JDK完成调用阻拦器之三:

完成中心的阻拦器类当某个办法被JDK调用之前或之后履行相应的阻拦器的办法.至于要阻拦哪一个方针,则需经过后边的操作来表现.

PersonIntercepter.java

  1. packagecn.edu.hld;
  2. publicclassPersonIntercepter
  3. {
  4. publicvoidmethod1()
  5. {
  6. System.out.println("method_1被履行了!");
  7. }
  8. publicvoidmethod2()
  9. {
  10. System.out.println("method_2被履行了!");
  11. }
  12. }


JDK完成调用阻拦器之四:

为了让阻拦器知道其要阻拦的方针方针,以及其应履行的办法,则应该创立一个类,该类完成一个JDK反射系统里的接口InvocationHandler.

ProxyHandler .java

  1. packagecn.edu.hld;
  2. importjava.lang.reflect.InvocationHandler;
  3. importjava.lang.reflect.Method;
  4. publicclassProxyHandlerimplementsInvocationHandler
  5. {
  6. privateObjecttarget;
  7. privatePersonIntercepterpi=newPersonIntercepter();
  8. publicObjectinvoke(Objectproxy,Methodmethod,Object[]args)
  9. throwsThrowable
  10. {
  11. Objectresult=null;
  12. if(method.getName().equals("info"))
  13. {
  14. pi.method1();
  15. result=method.invoke(target,args);
  16. pi.method2();
  17. }
  18. else
  19. {
  20. result=method.invoke(target,args);
  21. }
  22. returnresult;
  23. }
  24. publicvoidsetTarget(Objecttarget)
  25. {
  26. this.target=target;
  27. }
  28. }


JDK完成调用阻拦器之五:

为了依据方针方针生成一个署理方针,还应该创立一个署理工厂.

MyProxyFactory.java

  1. packagecn.edu.hld;
  2. importjava.lang.reflect.Proxy;
  3. publicclassMyProxyFactory
  4. {
  5. publicstaticObjectgetProxy(Objecttarget)
  6. {
  7. ProxyHandlerhandler=newProxyHandler();
  8. handler.setTarget(target);
  9. returnProxy.newProxyInstance(PersonImpl.class.getClassLoader()
  10. ,target.getClass().getInterfaces(),handler);
  11. }
  12. }


JDK完成调用阻拦器之六:

主程序的完成.

TestPerson.java

  1. packagecn.edu.hld;
  2. publicclassTestPerson
  3. {
  4. publicstaticvoidmain(Stringargs[])
  5. {
  6. PersontargetPerson=newPersonImpl();
  7. Personperson=null;
  8. Objectproxy=MyProxyFactory.getProxy(targetPerson);
  9. if(proxyinstanceofPerson)
  10. {
  11. person=(Person)proxy;
  12. }
  13. person.info();
  14. person.run();
  15. }
  16. }


JDK完成调用阻拦器之七:

直接在MyEclipse中运转.得到成果如下:

  1. method_1被履行了!
  2. 我是thtwin
  3. method_2被履行了!
  4. 我想跑得快一些!

JDK完成调用阻拦器的根本结构和办法就介绍完了,那么现在你对JDK完成调用阻拦器是不是有所了解了呢?

【修改引荐】

  1. JDK1.6的十大技能浅谈
  2. 装置JDK后JRE与JVM联络浅谈
  3. JDK源码Java.lang.Boolean的浅析
  4. Linux装置JDK与VI修改器操作浅析
  5. JDK源码剖析之Set类详解
转载请说明出处
知优网 » JDK完成调用拦截器浅析(java拦截器使用详解)

发表评论

您需要后才能发表评论