成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

JDK實現調用攔截器淺析

開發 后端
JDK實現調用攔截器是如何執行的呢?那么我們就在這篇文章里向你介紹JDK實現調用攔截器的情況。

JDK實現動態代理調用攔截器中的方法的過程是什么呢?

JDK實現調用攔截器之一:

實現接口的實例來生成代理,因此創建一個接口

interface person 

  1. package cn.edu.hld;   
  2.  
  3. public interface Person   
  4. {   
  5. public void info() ;   
  6. public void run() ;   
  7. }  

JDK實現調用攔截器之二:

提供一個Person接口的實現類.

類PersonImpl .java

  1. package cn.edu.hld;   
  2.  
  3. public class PersonImpl implements Person   
  4. {   
  5.  
  6. public void info()   
  7. {   
  8. // TODO Auto-generated method stub   
  9. System.out.println("我是thtwin") ;   
  10.  
  11. }   
  12. public void run()   
  13. {   
  14. // TODO Auto-generated method stub   
  15. System.out.println("我想跑得快一些!");   
  16. }   
  17. }  


JDK實現調用攔截器之三:

實現核心的攔截器類當某個方法被JDK調用之前或之后執行相應的攔截器的方法.至于要攔截哪一個對象,則需通過后面的操作來體現.

PersonIntercepter.java

  1. package cn.edu.hld;   
  2.  
  3. public class PersonIntercepter   
  4. {   
  5. public void method1()   
  6. {   
  7. System.out.println("method_1被執行了!") ;   
  8. }   
  9. public void method2()   
  10. {   
  11. System.out.println("method_2被執行了!") ;   
  12. }   
  13. }  


JDK實現調用攔截器之四:

為了讓攔截器知道其要攔截的目標對象,以及其應執行的方法,則應該創建一個類,該類實現一個JDK反射體系里的接口InvocationHandler.

ProxyHandler .java

  1. package cn.edu.hld;   
  2.  
  3. import java.lang.reflect.InvocationHandler;   
  4. import java.lang.reflect.Method;   
  5.  
  6. public class ProxyHandler implements InvocationHandler   
  7. {   
  8. private Object target ;   
  9. private PersonIntercepter pi = new PersonIntercepter() ;   
  10. public Object invoke(Object proxy, Method method, Object[] args)   
  11. throws Throwable   
  12. {   
  13. Object result = null ;   
  14. if(method.getName().equals("info"))   
  15. {   
  16. pi.method1() ;   
  17. result = method.invoke(target, args) ;   
  18. pi.method2() ;   
  19. }   
  20. else   
  21. {   
  22. result = method.invoke(target, args) ;   
  23. }   
  24. return result;   
  25. }   
  26. public void setTarget(Object target)   
  27. {   
  28. this.target = target;   
  29. }   
  30. }  


JDK實現調用攔截器之五:

為了根據目標對象生成一個代理對象,還應該創建一個代理工廠.

MyProxyFactory.java

  1. package cn.edu.hld;   
  2.  
  3. import java.lang.reflect.Proxy;   
  4.  
  5. public class MyProxyFactory   
  6. {   
  7. public static Object getProxy(Object target)   
  8. {   
  9. ProxyHandler handler = new ProxyHandler() ;   
  10. handler.setTarget(target) ;   
  11. return Proxy.newProxyInstance(PersonImpl.class.getClassLoader()   
  12. ,target.getClass().getInterfaces(),handler) ;   
  13. }   
  14. }  


JDK實現調用攔截器之六:

主程序的實現.

TestPerson.java

  1. package cn.edu.hld;   
  2.  
  3. public class TestPerson   
  4. {   
  5. public static void main(String args[])   
  6. {   
  7. Person targetPerson = new PersonImpl() ;   
  8. Person person = null ;   
  9. Object proxy = MyProxyFactory.getProxy(targetPerson) ;   
  10. if(proxy instanceof Person)   
  11. {   
  12. person = (Person)proxy ;   
  13. }   
  14. person.info() ;   
  15. person.run() ;   
  16. }   
  17. }  


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類詳解
責任編輯:仲衡 來源: 中國網管聯盟
相關推薦

2011-11-21 14:21:26

SpringMVCJava框架

2009-06-24 16:00:00

2009-09-27 17:37:32

Hibernate攔截

2025-02-28 08:14:53

2025-01-02 10:10:51

2009-06-25 15:59:21

Struts2教程攔截器

2023-03-10 19:36:47

2023-09-05 08:58:07

2011-05-16 10:14:11

Hibernate

2025-05-09 08:20:50

2009-02-04 14:45:06

2009-06-04 08:01:25

Struts2攔截器原理

2024-05-06 00:00:00

C#工具代碼

2009-07-07 15:53:02

JDK日志

2020-03-25 17:55:30

SpringBoot攔截器Java

2009-06-25 15:54:42

Struts2教程攔截器

2012-02-03 13:27:16

2009-09-04 09:27:48

C#調用瀏覽器

2024-02-28 09:35:52

2009-02-04 14:19:38

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲欧洲一区二区 | 中文精品视频 | 精品久久99 | 欧美8一10sex性hd | 亚州一区二区三区 | 亚洲精品一区二区三区蜜桃久 | 日韩中文字幕视频在线观看 | 精品欧美一区二区三区久久久 | 激情在线视频网站 | 欧美无乱码久久久免费午夜一区 | 免费激情网站 | 国产在线精品一区二区三区 | 拍拍无遮挡人做人爱视频免费观看 | 99tv| 精品久久久久久久久久 | 午夜精品一区二区三区在线视频 | 1000部精品久久久久久久久 | 国产在线视频一区二区董小宛性色 | 亚洲国产欧美在线 | 羞视频在线观看 | 成年人黄色一级片 | 欧美成人h版在线观看 | 久久精品亚洲国产 | 精品动漫一区 | 午夜精品久久久久久久99黑人 | 青娱乐国产| 国产精品免费在线 | 最新伦理片 | av天天澡天天爽天天av | 日韩欧美久久 | 国产视频三区 | 一区二区国产在线 | 91动漫在线观看 | av二区三区 | 免费国产视频 | 精品成人| 欧美日韩亚洲国产 | 爽爽免费视频 | 一级片在线视频 | 伊人色综合久久久天天蜜桃 | 免费看黄色视屏 |