`
uule
  • 浏览: 6359657 次
  • 性别: Icon_minigender_1
  • 来自: 一片神奇的土地
社区版块
存档分类
最新评论

JDK的动态代理总结

阅读更多

jdk的动态代理是基于接口的,必须实现了某一个或多个任意接口才可以被代理 ,并且只有这些接口中的方法会被代理。

我们需要写一个自定义的调用处理器(实现接口java.lang.reflect.InvocationHandler ),然后使用类java.lang.reflect.Proxy中的静态方法生成代理类,并把这个代理类当做原先的类使用就可以。

 

1.返回一个与业务代表对象有相同接口的代理对象

public static Object decorate(Object delegate) {
return Proxy.newProxyInstance(delegate.getClass().getClassLoader(),
delegate.getClass().getInterfaces(), new XAWrapperHandler(delegate));
} 

 2.包装业务代表对象所有的业务方法

public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
Object result = null;
session = SessionFactory.getSession();
try {
Transaction tx = session.beginTransaction();
//调用原始业务对象的业务方法
result = method.invoke(delegate, args);
session.flush();
tx.commit();
} catch (Throwable t) {
ta.rollback();
}
return result;
}

 3

 

 


 

动态代理的详细可见这篇:

http://www.cnblogs.com/huxi/archive/2009/12/16/1625899.html

 

  • 大小: 202.9 KB
  • 大小: 178.9 KB
  • 大小: 211.5 KB
分享到:
评论

相关推荐

    JDK动态代理_JDK动态代理

    ### JDK动态代理详解 #### 一、引言 在软件工程中,代理模式是一种常见的设计模式,它通过为一个对象提供一个替代品或占位符来控制对这个对象的访问。这种模式通常用于添加额外的功能(例如日志记录、事务管理等)...

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

    总结来说,JDK动态代理简单且高效,适合接口驱动的设计,而CGLIB适用于更复杂的场景,尤其当代理的目标类没有接口或者接口较少时。在选择代理方式时,需要根据项目需求、性能要求和类设计来决定。"Spring_aop3"可能...

    jdk动态代理和CGlib动态代理

    JDK动态代理和CGlib动态代理是Java中实现这一目标的两种主要方式。 ### JDK动态代理 JDK动态代理基于Java的接口实现。如果一个类实现了至少一个接口,我们就可以为这个类创建一个动态代理。动态代理通过`java.lang....

    java代理机制 JDK动态代理和cglib代理 详解

    本文将深入探讨两种主要的Java代理实现:JDK动态代理和CGLIB代理。 一、JDK动态代理 JDK动态代理基于接口实现,它要求被代理的类必须实现至少一个接口。在运行时,Java会动态地创建一个新的类,这个类实现了与原始...

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

    总结来说,代理模式是软件设计中的一个重要概念,JDK动态代理和Spring AOP则是Java世界中实现这一模式的常见手段。理解并掌握它们,能够帮助我们在实际项目中更加灵活地处理各种附加需求,提高代码的可维护性和可...

    JDK动态代理和CGLIB代理

    总结起来,JDK动态代理适用于目标对象实现了接口的情况,而CGLIB代理则可以在没有接口的情况下进行代理。两者都可以实现运行时的代理,但适用场景不同,开发者可以根据具体需求选择适合的代理方式。在实际开发中,...

    spring jdk动态代理

    总结来说,Spring AOP中的JDK动态代理机制是一种高效且灵活的实现方式,它允许我们在不修改原始代码的前提下,通过代理对象添加额外的功能。这使得我们能够更专注于业务逻辑,而不是关注点的实现。通过理解和掌握这...

    Jdk动态代理和cglib动态代理原理

    - **CGLIB代理**适用于目标类没有接口或者不希望修改原有接口的情况,其性能通常优于JDK代理,因为它是基于字节码生成的子类,而JDK代理需要反射调用接口方法。 在实际开发中,如Spring AOP框架就同时支持JDK和...

    模拟JDK动态代理内部实现

    总结起来,JDK动态代理提供了在运行时构建代理对象的能力,这在处理跨切面的业务逻辑时非常有用。通过模拟其内部实现,我们可以更深入地理解动态代理的工作原理,并根据需求定制自己的代理机制。通过阅读和分析提供...

    java jdk 动态代理 演示demo

    总结,Java JDK的动态代理为我们提供了一种灵活的方式,可以在不修改原始代码的情况下扩展或修改对象的行为。通过创建代理对象,我们可以方便地实现如日志记录、事务管理、权限验证等附加功能,极大地提高了代码的可...

    CGLIB 和 JDK生成动态代理类的区别

    总结来说,CGLIB和JDK动态代理都是为了实现运行时的方法拦截,但适用场景不同。JDK动态代理适用于接口驱动的设计,而CGLIB则适用于类驱动的情况。选择哪种方式取决于项目需求、代码结构以及性能考虑。了解这两种技术...

    JDK动态代理proxy

    总结,JDK动态代理是一种强大的工具,它允许我们在不修改原始代码的情况下,通过拦截接口方法调用来扩展或修改其行为。通过理解其工作原理和如何使用,我们可以有效地利用这一特性来提高代码的灵活性和可维护性。

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

    总结来说,JDK动态代理在EJB3和Web服务中扮演了重要角色,它使得开发者能够灵活地添加额外功能,而不必侵入核心业务逻辑。这种能力在大型、复杂的企业级系统中尤其宝贵,因为它提高了代码的可维护性和可扩展性。通过...

    jdk动态代理 + 拦截器实现小例

    总结来说,JDK动态代理结合拦截器能提供一种强大的代码扩展方式,它允许我们在不修改原有代码的基础上,对方法调用进行拦截和增强,从而实现诸如日志记录、性能监控、事务管理等多种功能。通过深入理解和熟练运用这...

    代理模式-静态动态代理-jdk动态代理-cglib动态代理

    在Java中,代理模式有多种实现方式,包括静态代理、JDK动态代理和CGLIB动态代理。 **静态代理** 静态代理是最早也是最基础的代理实现方式。在静态代理中,我们需要创建一个代理类,这个代理类与原始类(被代理类)...

    模拟JDK动态代理

    在Java编程中,JDK动态代理是一种非常重要的技术,它允许我们在运行时创建对现有接口的代理实现。这种技术在很多场景下都有广泛的应用,比如AOP(面向切面编程)、事务管理、缓存处理等。现在我们来深入探讨一下JDK...

    jdk动态代理 cglib3.0动态代理

    JDK代理基于接口,适用于简单场景;CGLIB通过字节码技术,适用于更复杂的需求。开发者可以根据项目需求选择合适的方法。对于学习和理解这两种动态代理机制,可以参考提供的博客链接,以及深入研究源码,这将有助于...

    简谈jdk动态代理

    ### 简谈JDK动态代理 #### 一、引言 JDK动态代理机制是Java反射机制的一个重要应用,它允许程序在运行时创建一个实现了特定接口的新类实例,并且能够控制这些新类实例的方法调用行为。这种机制不仅提高了代码的灵活...

    spring-demo16-JDK动态代理.zip

    总结来说,"spring-demo16-JDK动态代理.zip"可能是一个包含Spring AOP与JDK动态代理结合使用的示例项目,展示了如何通过动态代理在运行时增强对象的行为。这个例子可以帮助开发者理解如何在实际应用中利用JDK动态...

Global site tag (gtag.js) - Google Analytics