`

动态代理的应用

    博客分类:
  • Java
阅读更多
代理模式作为开发人员来讲,应该不会很陌生,它要做的事情很简单:屏蔽被调用方的实现过程。

它在一类远程过程调用中,使用得非常广泛。具体的过程呢?

调用方 A                                 被调用方B

methodA(){                               getResult(){
   call B.getResult();                       doSomething()。
}                                        }

其实就是A远程调用B的方法。如果不想把远程调用的实现过程放在应用层面上,我只想一个简单的方法调用就行了,具体的实现我暂时不想看到,那么这里可以使用动态代理。

在Java中,动态代理是要实现InvocationHandler接口的,它里面有一个方法叫invoke(),你实现这个方法就可以了。如果不是调用远程方法就直接调用本地方法,如果是远程方法,就走http或者socket请求了,将请求的参数封闭一个对象传递过去就行了,服务器接收参数,根据参数信息调用对应的方法,将结果再传回来就ok了。是不是很简单呢?

invoke()方法在这里像一个拦截器一样,截获方法请求,然后在真正的方法前后可以加入一些逻辑控制,如远程调用封闭HTTP请求,拿回结果等等。AOP我想大家也都听过,AOP的本质上就是动态代理,在方法的前后加上一些日志输出,权限控制等等,只要明白了动态代理的精髓,我想你可以把它运用得如鱼得水。

但是Java的动态代理,它也存在一些不足之处,那就是必须要有接口存在,现在的问题来了,假设没有接口,那么可以使用动态代理么?可以,那就要使用字节码来实现了。拦截到方法后,在方法前后织入一些字节码进入就可以实现逻辑的控制了。
分享到:
评论

相关推荐

    castle IOC AOP动态代理应用

    在"castle IOC AOP动态代理应用"这个主题中,我们可以看到这些技术是如何协同工作的。首先,通过Castle Windsor容器管理我们的服务实例,实现依赖注入。然后,利用AOP和动态代理,我们可以为这些服务添加额外的行为...

    java + 动态代理 + 动态代理实际应用场景

    2: 动态代理demo 举例实际应用场景(载入数据库驱动的时候,使用AIDL与系统Servic进行通信) 3: 动态代理使用到基础理论:ClassLoader 加载.class字节码文件得到 , Class对象, Class对象通过 newProxyInstance ...

    代理模式,JDK动态代理,SpringAOP来龙去脉

    - JDK动态代理和Spring AOP在实际开发中广泛应用于事务管理、缓存、日志记录等场景。 - 比如,在分布式服务环境中,代理模式可以用于实现远程调用,如RMI、Dubbo等。 6. **示例代码**: - 创建一个简单的JDK动态...

    aop动态代理

    下面是一个简单的动态代理应用实例: ```java public class MyInvocationHandler implements InvocationHandler { private Object target; public MyInvocationHandler(Object target) { this.target = target;...

    java动态代理实现自定义连接池

    在这个场景中,我们将动态代理应用于自定义连接池的实现,来提高数据库访问的效率和资源管理。 首先,让我们深入理解动态代理。Java中的动态代理是通过`java.lang.reflect.Proxy`类和`java.lang.reflect....

    spring+动态代理

    在本篇中,我们将深入探讨Spring如何使用动态代理以及其在实际开发中的应用。 动态代理的核心概念是JDK的`java.lang.reflect.Proxy`类和`java.lang.reflect.InvocationHandler`接口。Proxy类用于创建一个代理对象,...

    JDK动态代理_JDK动态代理

    本文将详细介绍JDK动态代理的原理与应用,帮助读者深入理解其工作方式以及如何在实际项目中运用。 #### 二、JDK动态代理简介 JDK动态代理是Java平台提供的一个工具包,用于在运行时创建代理对象。它主要适用于实现...

    浅谈JDK动态代理与CGLIB代理去区别

    本篇文章将深入探讨JDK动态代理和CGLIB代理的区别,以及它们在实际应用中的选择。 首先,JDK动态代理主要依赖于java.lang.reflect.Proxy类和java.lang.reflect.InvocationHandler接口。Proxy类用于创建一个代理对象...

    动态代理设计模式 日志和源码

    对于没有实现接口的类,JDK动态代理无法直接应用,此时CGLIB库就派上用场了。CGLIB库可以生成一个目标类的子类,从而实现对非接口类的代理。它通过ASM库来操作字节码生成代理类,同样可以拦截方法调用,实现类似的...

    一篇讲动态代理的好文 <动态代理的前世今生>

    本文旨在深入探讨动态代理的概念、原理及其实现方式,并通过实例帮助读者更好地理解动态代理的应用场景与价值。 #### 二、动态代理概述 动态代理是指在运行时根据需要创建代理对象的技术。它不同于静态代理(例如...

    静态代理和动态代理Demo

    静态代理和动态代理是两种常见的代理模式,它们在Java中有着广泛的应用,特别是在SpringBoot等框架中。本资源提供了一个简单的Java实现,适用于JDK1.8版本,并经过了验证,对初学者理解设计模式具有指导意义。 静态...

    Java静态代理和动态代理

    Java中的代理模式是一种设计模式,它允许我们创建一个代理类,该类代表并增强另...在实际应用中,应根据项目需求和性能考虑选择静态代理或动态代理。对于需要频繁添加或修改代理行为的场景,动态代理通常是更好的选择。

    Java动态代理简单应用

    在动态代理上所做的所有调用都会被重定向到单一的调用处理器(InvocationHandler)上,调用处理器的工作是揭示调用的类型并确定相应的策略。  Java动态代理实现机制采用了反射的思想,有关于反射的基础知识,可以...

    JDK动态代理在EJB3(包括WebService)中的应用

    标题 "JDK动态代理在EJB3(包括WebService)中的应用" 暗示了本文将探讨Java开发中的一种重要技术——JDK动态代理,以及它如何在企业级JavaBean (EJB) 3.x版本及其相关的Web服务实现中发挥作用。EJB3是Java EE平台的...

    qt qtableview动态代理

    动态代理在数据编辑、过滤和选择场景中非常有用,例如在数据库应用、配置管理界面或者复杂表格数据的编辑界面中。 总结来说,通过Qt的动态代理机制,我们可以极大地增强QTableView的功能,为用户提供更直观、更...

    AOP之JDK动态代理和CGLib动态代理

    Spring框架是AOP实现的一个典范,它提供了两种主要的动态代理方式:JDK动态代理和CGLib动态代理。 **JDK动态代理**: JDK动态代理基于Java的反射API实现,适用于接口代理。当目标对象实现了至少一个接口时,Spring...

    # 动态代理的应用场.md

    动态代理是一种常见的设计模式,它在Java开发中广泛应用。通过动态代理,我们可以在运行时生成代理类,用于代理真实对象的方法调用。这种代理机制允许我们在不修改原始代码的情况下,对原始对象的行为进行扩展、增强...

    动态代理实现AOP机制

    动态代理是实现AOP的一种常见手段,尤其在Java中应用广泛。 动态代理主要分为JDK动态代理和CGLIB动态代理两种方式: 1. **JDK动态代理**: JDK动态代理基于接口实现,它通过`java.lang.reflect.Proxy`类和`java....

    Java 动态代理详解(代理模式+静态代理+JDK动态代理+CGLIB动态代理)

    Java 动态代理是 Java 编程语言中的一种强大工具,广泛应用于 Spring AOP、Hibernate 数据查询、测试框架的后端 mock、RPC 远程调用、Java 注解对象获取、日志、用户鉴权、全局性异常处理、性能监控等领域。...

    AOP动态代理(反射机制)

    4. **应用场景**:AOP动态代理常用于框架开发,例如Spring AOP。Spring AOP提供了基于代理的实现,可以在不修改原始代码的情况下,为业务方法添加额外的功能。此外,它还支持基于注解的切面定义,使得AOP的使用更加...

Global site tag (gtag.js) - Google Analytics