- 浏览: 6359566 次
- 性别:
- 来自: 一片神奇的土地
文章分类
- 全部博客 (745)
- JQuery (25)
- JS (33)
- 数据库 (59)
- Java基础 (56)
- JSON (8)
- XML (8)
- ireport (7)
- 设计模式 (10)
- 心情 (14)
- freemarker (1)
- 问题 (15)
- powerdesigner (2)
- CSS (15)
- DWR (4)
- tomcat (16)
- Hibernate (12)
- Oracle (7)
- Struts (7)
- Spring (34)
- JSP (23)
- 需学习 (64)
- 工具类库 (63)
- Maven (14)
- 笔试题 (34)
- 源码学习 (31)
- 多线程 (39)
- Android (32)
- 缓存 (20)
- SpringMVC (14)
- jQueryEasyUi (12)
- webservice-RPC (13)
- ant (1)
- ASP.NET (10)
- 正则表达式 (3)
- Linux (15)
- JBoss (1)
- EJB (3)
- UML (2)
- JMS (3)
- Flex (8)
- JSTL (2)
- 批处理 (5)
- JVM (16)
- 【工具】 (16)
- 数据结构 (29)
- HTTP/TCP/Socket (18)
- 微信 (1)
- tomcat源码学习 (15)
- Python (30)
- 主机 (2)
- 设计与架构 (19)
- thrift-RPC (2)
- nginx (6)
- 微信小程序 (0)
- 分布式+集群 (12)
- IO (1)
- 消息队列 (4)
- 存储过程 (8)
- redis (9)
- zookeeper (5)
- 海量数据 (5)
最新评论
-
360pluse:
技术更新,战术升级!Python爬虫案例实战从零开始一站通网盘 ...
Python爬虫实战:Scrapy豆瓣电影爬取 -
18335864773:
推荐用 pageoffice 组件生成 word 文件。
JAVA生成WORD工具类 -
jjhe369:
LISTD_ONE 写道起始地址为163.135.0.1 结束 ...
IP地址与CIDR -
baojunhu99:
private final int POOL_SIZE = 5 ...
使用CompletionService获取多线程返回值 -
LovingBaby:
胡说,javascript 运行时是单线程的,event lo ...
Ajax请求是否可以实现同步
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
发表评论
-
拦截器和过滤器的区别
2019-06-27 10:46 7071【Spring的拦截器】于【Servlet的Filter】有 ... -
高并发下的数据结构List/Set/Map
2019-03-26 14:17 1273高并发下的Java数据结 ... -
AQS
2019-03-21 15:08 2089大白话聊聊Java并发面试问题之谈谈你对AQS的理解? ... -
tomcat的三种运行模式+JAVA NIO
2019-03-12 11:13 5096详解Tomcat三种运行模 ... -
反射基础
2019-01-11 14:51 671十年架构师不到400行手写一个Spring MVC ... -
java反射原理, 注解原理
2019-01-08 17:22 4597注解机制及原理 JAVA ... -
内存泄露与内存溢出的区别
2018-12-24 16:14 27531、内存泄漏 memory le ... -
深入解析JAVA中的装箱与拆箱
2018-12-21 10:42 1331地址: https://www.cnblogs.com/d ... -
负载均衡原理
2018-12-20 17:43 804简介几种负载均衡原理 高并发解决方案之一 ——负载均衡 ... -
如何避免死锁
2018-12-20 15:31 3404一句话一张图说明银行 ... -
CAS自旋锁
2018-12-20 11:12 1653我们常说的 CAS 自旋锁是什么 CAS与ABA问题 ... -
【一个故事讲清楚NIO+Netty线程模型】
2018-08-22 10:30 3342五种网络io模型 一个简单故事讲述NIO blo ... -
char/varchar/nvarchar的区别及其各自的使用场景
2018-08-20 10:58 2442MySQL数据库char与varchar ... -
MVCC
2018-08-20 10:34 3549轻松理解MYSQL MVCC 实现机制 1.1 什 ... -
【tomcat系统架构(一)】
2018-08-16 16:02 1580四图带你了解Tomcat系统架构——让面试官颤抖Tomca ... -
分布式ID的实现方式
2018-04-27 18:19 3680分布式ID方案有哪些以及各自的优劣势 分布式ID生成器解 ... -
分布式锁的实现方式
2018-04-27 15:35 1800分布式锁解决方案-头条 分布式锁三种实现方式-CSDN ... -
【学习升级路线2】
2018-04-26 13:43 809非技术问题 研究比较深入的领域有哪些 对业内信息的关注 ... -
【学习升级路线1】
2018-04-26 13:54 993思维的惰性 我30的 ... -
需学习东西(面试问题)-backup
2018-04-26 13:46 1503记2017.3.21阿里面试经历,java方向 历年阿里面 ...
相关推荐
### JDK动态代理详解 #### 一、引言 在软件工程中,代理模式是一种常见的设计模式,它通过为一个对象提供一个替代品或占位符来控制对这个对象的访问。这种模式通常用于添加额外的功能(例如日志记录、事务管理等)...
总结来说,JDK动态代理简单且高效,适合接口驱动的设计,而CGLIB适用于更复杂的场景,尤其当代理的目标类没有接口或者接口较少时。在选择代理方式时,需要根据项目需求、性能要求和类设计来决定。"Spring_aop3"可能...
JDK动态代理和CGlib动态代理是Java中实现这一目标的两种主要方式。 ### JDK动态代理 JDK动态代理基于Java的接口实现。如果一个类实现了至少一个接口,我们就可以为这个类创建一个动态代理。动态代理通过`java.lang....
本文将深入探讨两种主要的Java代理实现:JDK动态代理和CGLIB代理。 一、JDK动态代理 JDK动态代理基于接口实现,它要求被代理的类必须实现至少一个接口。在运行时,Java会动态地创建一个新的类,这个类实现了与原始...
总结来说,代理模式是软件设计中的一个重要概念,JDK动态代理和Spring AOP则是Java世界中实现这一模式的常见手段。理解并掌握它们,能够帮助我们在实际项目中更加灵活地处理各种附加需求,提高代码的可维护性和可...
总结起来,JDK动态代理适用于目标对象实现了接口的情况,而CGLIB代理则可以在没有接口的情况下进行代理。两者都可以实现运行时的代理,但适用场景不同,开发者可以根据具体需求选择适合的代理方式。在实际开发中,...
总结来说,Spring AOP中的JDK动态代理机制是一种高效且灵活的实现方式,它允许我们在不修改原始代码的前提下,通过代理对象添加额外的功能。这使得我们能够更专注于业务逻辑,而不是关注点的实现。通过理解和掌握这...
- **CGLIB代理**适用于目标类没有接口或者不希望修改原有接口的情况,其性能通常优于JDK代理,因为它是基于字节码生成的子类,而JDK代理需要反射调用接口方法。 在实际开发中,如Spring AOP框架就同时支持JDK和...
总结起来,JDK动态代理提供了在运行时构建代理对象的能力,这在处理跨切面的业务逻辑时非常有用。通过模拟其内部实现,我们可以更深入地理解动态代理的工作原理,并根据需求定制自己的代理机制。通过阅读和分析提供...
总结,Java JDK的动态代理为我们提供了一种灵活的方式,可以在不修改原始代码的情况下扩展或修改对象的行为。通过创建代理对象,我们可以方便地实现如日志记录、事务管理、权限验证等附加功能,极大地提高了代码的可...
总结来说,CGLIB和JDK动态代理都是为了实现运行时的方法拦截,但适用场景不同。JDK动态代理适用于接口驱动的设计,而CGLIB则适用于类驱动的情况。选择哪种方式取决于项目需求、代码结构以及性能考虑。了解这两种技术...
总结,JDK动态代理是一种强大的工具,它允许我们在不修改原始代码的情况下,通过拦截接口方法调用来扩展或修改其行为。通过理解其工作原理和如何使用,我们可以有效地利用这一特性来提高代码的灵活性和可维护性。
总结来说,JDK动态代理在EJB3和Web服务中扮演了重要角色,它使得开发者能够灵活地添加额外功能,而不必侵入核心业务逻辑。这种能力在大型、复杂的企业级系统中尤其宝贵,因为它提高了代码的可维护性和可扩展性。通过...
总结来说,JDK动态代理结合拦截器能提供一种强大的代码扩展方式,它允许我们在不修改原有代码的基础上,对方法调用进行拦截和增强,从而实现诸如日志记录、性能监控、事务管理等多种功能。通过深入理解和熟练运用这...
在Java中,代理模式有多种实现方式,包括静态代理、JDK动态代理和CGLIB动态代理。 **静态代理** 静态代理是最早也是最基础的代理实现方式。在静态代理中,我们需要创建一个代理类,这个代理类与原始类(被代理类)...
在Java编程中,JDK动态代理是一种非常重要的技术,它允许我们在运行时创建对现有接口的代理实现。这种技术在很多场景下都有广泛的应用,比如AOP(面向切面编程)、事务管理、缓存处理等。现在我们来深入探讨一下JDK...
JDK代理基于接口,适用于简单场景;CGLIB通过字节码技术,适用于更复杂的需求。开发者可以根据项目需求选择合适的方法。对于学习和理解这两种动态代理机制,可以参考提供的博客链接,以及深入研究源码,这将有助于...
### 简谈JDK动态代理 #### 一、引言 JDK动态代理机制是Java反射机制的一个重要应用,它允许程序在运行时创建一个实现了特定接口的新类实例,并且能够控制这些新类实例的方法调用行为。这种机制不仅提高了代码的灵活...
总结来说,"spring-demo16-JDK动态代理.zip"可能是一个包含Spring AOP与JDK动态代理结合使用的示例项目,展示了如何通过动态代理在运行时增强对象的行为。这个例子可以帮助开发者理解如何在实际应用中利用JDK动态...