当前位置:首页 > CN2资讯 > 正文内容

CGlib代理技术

12小时前CN2资讯

一、CGlib原理

jdk实现动态代理需要实现类通过接口定义业务方法,对于没有接口的类,如何实现动态代理呢?这就需要CGlib了,CGlib采用非常底层的字节码技术,其原理是用字节码技术为一个类创建子类,并在子类中采用方法拦截的技术拦截所有父类方法的调用,顺势织入横切逻辑。JDK动态代理和CGlib动态代理均是实现SpringAop的基础。

二、代码实现

1. package net.battier.dao.impl;  

2.   

3. /** 

4.  * 这个是没有实现接口的实现类 

5.  *  

6.  * @author student 

7.  *  

8.  */  

9. public class BookFacadeImpl1 {  

10.     public void addBook() {  

11.         System.out.println("增加图书的普通方法...");  

12.     }  

13. }  

 

1. package net.battier.proxy;  

2.   

3. import java.lang.reflect.Method;  

4.   

5. import net.sf.cglib.proxy.Enhancer;  

6. import net.sf.cglib.proxy.MethodInterceptor;  

7. import net.sf.cglib.proxy.MethodProxy;  

8.   

9. /** 

10.  * 使用cglib动态代理 

11.  *  

12.  * @author student 

13.  *  

14.  */  

15. public class BookFacadeCglib implements MethodInterceptor {  

16.     private Object target;  

17.   

18.     /** 

19.      * 创建代理对象 

20.      *  

21.      * @param target 

22.      * @return 

23.      */  

24.     public Object getInstance(Object target) {  

25.         this.target = target;  

26.         Enhancer enhancer = new Enhancer();  

27.         enhancer.setSuperclass(this.target.getClass());  

28.         // 回调方法  

29.         enhancer.setCallback(this);  

30.         // 创建代理对象  

31.         return enhancer.create();  

32.     }  

33.   

34.     @Override  

35.     // 回调方法  

36.     public Object intercept(Object obj, Method method, Object[] args,  

37.             MethodProxy proxy) throws Throwable {  

38.         System.out.println("事物开始");  

39.         proxy.invokeSuper(obj, args);  

40.         System.out.println("事物结束");  

41.         return null;  

42.   

43.   

44.     }  

45.   

46. }  

 

1. package net.battier.test;  

2.   

3. import net.battier.dao.impl.BookFacadeImpl1;  

4. import net.battier.proxy.BookFacadeCglib;  

5.   

6. public class TestCglib {  

7.       

8.     public static void main(String[] args) {  

9.         BookFacadeCglib cglib=new BookFacadeCglib();  

10.         BookFacadeImpl1 bookCglib=(BookFacadeImpl1)cglib.getInstance(new BookFacadeImpl1());  

11.         bookCglib.addBook();  

12.     }  

13. }

 

 

    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/24306.html

    分享给朋友:

    “CGlib代理技术” 的相关文章

    如何安全地关闭防火墙和使用Linux命令管理防火墙

    在使用Linux系统时,关闭防火墙这件事我总觉得是个敏感话题。防火墙是保护计算机免受外部攻击的重要屏障,理解其作用很有必要。防火墙可以帮助我们监控和限制进入或离开系统的网络流量,让未授权的访问无处遁形。因此,在我们决定关闭防火墙之前,首先要明确什么样的场景和条件下,这个操作是合理的。 关闭防火墙之前...

    选择最佳香港VPS大带宽服务的全面指南,助你无忧搭建在线业务

    在如今这个信息高速发展的时代,选择适合的VPS服务显得尤为重要。特别是香港VPS大带宽服务,以其独特的优势吸引了越来越多的用户。对于想要进行国际业务、网站托管或是搭建游戏服务器的用户来说,香港VPS大带宽服务绝对是个不错的选择。 香港VPS大带宽的优势显而易见。一个显著的特点是无需备案,这意味着用户...

    国内到东京快还是首尔快网络速度对比分析

    引言 在这个数字化快速发展的时代,网络速度对我们生活的影响越来越显著。很多时候,我们的工作、学习和娱乐都离不开稳定的网络连接。尤其是当我们考虑访问国外网站或进行国际交流时,网络速度的重要性更是无法忽视。今天,我想带大家探讨国内到东京和首尔的网络速度比较,看看这两个城市的网络表现究竟有何不同。 为什么...

    搬瓦工(BandwagonHOST)VPS服务器购买指南与套餐对比

    搬瓦工,大家熟悉的名字,实际上是BandwagonHOST的中文称呼。这家公司是加拿大IT7 Networks旗下的子公司,专注于提供VPS服务器主机服务,目标用户涵盖了全球多个国家和地区,包括美洲、欧洲和亚洲等地。对于那些需要稳定和高性能服务器的用户来说,搬瓦工绝对是一个值得考虑的选项。 说到搬瓦...

    CloudFront在病毒防护中的应用与安全策略解析

    在互联网时代,内容分发网络(CDN)扮演着至关重要的角色。CloudFront便是亚马逊提供的一款优秀的CDN服务。简单来说,CloudFront分发数据、视频、应用程序和API,可以通过全球的边缘位置快速传递内容。这种网络架构的设计使得用户能够从离他们最近的服务器获取信息,从而提升了访问速度和用户...

    2023年VPS评测:选择适合您的虚拟私人服务器的指南

    在网络世界中,VPS代表虚拟私人服务器。简单来说,它是一种虚拟化技术,允许用户在一台物理服务器上运行多个虚拟服务器。每个VPS都有独立的操作系统和资源,用户可以专属管理和配置,像对待自己的服务器一样。这种灵活性使得VPS成为开发者、企业和个体户等各种用户的热门选择。无论是网站托管,还是应用程序的开发...