JDK实现调用拦截器是如何执行的呢?那么我们就在这篇文章里向你介绍JDK实现调用拦截器的情况。
JDK完成动态署理调用阻拦器中的办法的进程是什么呢?
JDK完成调用阻拦器之一:
完成接口的实例来生成署理,因而创立一个接口
interface person
- packagecn.edu.hld;
- publicinterfacePerson
- {
- publicvoidinfo();
- publicvoidrun();
- }
JDK完成调用阻拦器之二:
供给一个Person接口的完成类.
类PersonImpl .java
- packagecn.edu.hld;
- publicclassPersonImplimplementsPerson
- {
- publicvoidinfo()
- {
- //TODOAuto-generatedmethodstub
- System.out.println("我是thtwin");
- }
- publicvoidrun()
- {
- //TODOAuto-generatedmethodstub
- System.out.println("我想跑得快一些!");
- }
- }
JDK完成调用阻拦器之三:
完成中心的阻拦器类当某个办法被JDK调用之前或之后履行相应的阻拦器的办法.至于要阻拦哪一个方针,则需经过后边的操作来表现.
PersonIntercepter.java
- packagecn.edu.hld;
- publicclassPersonIntercepter
- {
- publicvoidmethod1()
- {
- System.out.println("method_1被履行了!");
- }
- publicvoidmethod2()
- {
- System.out.println("method_2被履行了!");
- }
- }
JDK完成调用阻拦器之四:
为了让阻拦器知道其要阻拦的方针方针,以及其应履行的办法,则应该创立一个类,该类完成一个JDK反射系统里的接口InvocationHandler.
ProxyHandler .java
- packagecn.edu.hld;
- importjava.lang.reflect.InvocationHandler;
- importjava.lang.reflect.Method;
- publicclassProxyHandlerimplementsInvocationHandler
- {
- privateObjecttarget;
- privatePersonIntercepterpi=newPersonIntercepter();
- publicObjectinvoke(Objectproxy,Methodmethod,Object[]args)
- throwsThrowable
- {
- Objectresult=null;
- if(method.getName().equals("info"))
- {
- pi.method1();
- result=method.invoke(target,args);
- pi.method2();
- }
- else
- {
- result=method.invoke(target,args);
- }
- returnresult;
- }
- publicvoidsetTarget(Objecttarget)
- {
- this.target=target;
- }
- }
JDK完成调用阻拦器之五:
为了依据方针方针生成一个署理方针,还应该创立一个署理工厂.
MyProxyFactory.java
- packagecn.edu.hld;
- importjava.lang.reflect.Proxy;
- publicclassMyProxyFactory
- {
- publicstaticObjectgetProxy(Objecttarget)
- {
- ProxyHandlerhandler=newProxyHandler();
- handler.setTarget(target);
- returnProxy.newProxyInstance(PersonImpl.class.getClassLoader()
- ,target.getClass().getInterfaces(),handler);
- }
- }
JDK完成调用阻拦器之六:
主程序的完成.
TestPerson.java
- packagecn.edu.hld;
- publicclassTestPerson
- {
- publicstaticvoidmain(Stringargs[])
- {
- PersontargetPerson=newPersonImpl();
- Personperson=null;
- Objectproxy=MyProxyFactory.getProxy(targetPerson);
- if(proxyinstanceofPerson)
- {
- person=(Person)proxy;
- }
- person.info();
- person.run();
- }
- }
JDK完成调用阻拦器之七:
直接在MyEclipse中运转.得到成果如下:
- method_1被履行了!
- 我是thtwin
- method_2被履行了!
- 我想跑得快一些!
JDK完成调用阻拦器的根本结构和办法就介绍完了,那么现在你对JDK完成调用阻拦器是不是有所了解了呢?
【修改引荐】
- JDK1.6的十大技能浅谈
- 装置JDK后JRE与JVM联络浅谈
- JDK源码Java.lang.Boolean的浅析
- Linux装置JDK与VI修改器操作浅析
- JDK源码剖析之Set类详解
转载请说明出处
知优网 » JDK完成调用拦截器浅析(java拦截器使用详解)
知优网 » JDK完成调用拦截器浅析(java拦截器使用详解)