`

认识动态代理

阅读更多
   究竟什么是“动态代理”呢? 它是“代理模式”的一种更灵活的应用,我通过生活中的例子来说明一下代理和动态代理。
   比如我们要买一台电脑,不需要去生产电脑的厂家,而只需要到当地的代售商出购买即可。因为代售商已经预先购进了某品牌的电脑,当消费者来买的时候,可以直接将电脑卖出。这就是“代理模式”的体现,而代理商就是一个“代理角色”。但是这种代理模式存在一个问题:代售商只负责一个品牌的电脑,当消费者需要购买大量不同品牌电脑的时候,就要分别联系不同的代售商,这是一件很麻烦的事情。需要我们对营销机制进行改进,改进后的代售商将不预先购进电脑,等有消费者来购买电脑的时候,代理商再根据消费者需求去不同的生产厂家进货。这样一来,无论消费者需要多少品种的电脑,只需要一个代理商就能满足要求。这种模式便是“动态代理”。
    代理模式:类结构的模式,优点就是不需要更改原有类(被代理类)就能增强原有类(被代理类)的功能,缺点就是必须实现原有类(被代理类)的接口
    JDK的动态代理:优点就是不必“复制”原有类(被代理类)接口实现类,缺点就是必须为每个被代理类实现几乎一样的方法 ----这句话我理解还不到位,请各位指点!
    Spring默认采取的动态代理机制实现AOP,当动态代理不可用时(代理类无接口)会使用CGlib机制。但Spring的AOP有一定的缺点,第一个只能对方法进行切入,不能对接口,字段,静态代码块进行切入(切入接口的某个方法,则该接口下所有实现类的该方法将被切入)。第二个同类中的互相调用方法将不会使用代理类。因为要使用代理类必须从Spring容器中获取Bean。第三个性能不是最好的,我们使用自定义类加载器,性能要优于动态代理和CGlib。
     之后会不断更新文章。
参考文章:http://www.ibm.com/developerworks/cn/java/j-lo-proxy1/
http://newleague.iteye.com/blog/699086
http://www.iteye.com/topic/1116696
分享到:
评论

相关推荐

    简谈jdk动态代理

    听了马老师的课,对动态代理设计模式,有了一点自己的认识,希望和大家分享。后面cglib还没有总结。

    Spring AOP代理详细介绍

    如果一个类实现了一个或多个接口,那么Spring就会使用默认的JDK动态代理,如果没有实现任何接口,就会使用cglib来代理。当然我们也可以手动改变这些设置。这也是比较容易掉坑的部分,如果设置错了代理方式,那么在...

    spring第五天 .pdf

    重点掌握aop底层的原理之动态代理机制的概述及差别 1. 重点掌握代理对象执行逻辑分析 2. 重点掌握Cglib代理技术之产生代理对象和代理对象执行逻辑分析 3. 认识Spring AOP中底层常用的一些核心类 4. 源码阅读之查找...

    spring第四天.pdf

    7. 重点掌握aop底层的原理之动态代理机制的概述及差别 8. 重点掌握JDK代理技术之产生代理对象和代理对象执行逻辑分析 9. 重点掌握Cglib代理技术之产生代理对象和代理对象执行逻辑分析 10. 认识Spring AOP中底层常用...

    Nginx + Tomcat实现请求动态数据和请求静态资源的分离详解

    一、认识访问静态资源与访问动态资源的区别 静态资源:指存储在硬盘内的数据,固定的数据,不需要计算的数据。 如:图片、字体、js文件、css文件等等。在用户访问静态资源时,服务器会直接将这些资源返回到用户的...

    电脑代理服务器地址和端口号.docx

    为了使大家对这些常用端口多一些认识,在本章后面将详细把这些端口所对面应的服务进行列表,供各位理解和参考。 (2)注册端口(Registered ports):端口号从1025到49151。它们松散地绑定于一电脑代理服务器地址和...

    畅通无阻-高效架设RedHatLinux服务器

    认识代理服务器 2.Squid代理服务器 3.安装Squid 4.Squid代理服务器配置 5.Squid高级配置 6.启动Squid 7.设置Squid客户机 第四章 资源共享与应用 第一节 管理Samba服务器 1.认识Samba 2.Samba的组成 3....

    Mybatis--SQL解析流程图

    此图用于展示Mybatis的SQL解析的具体流程,包含了SqlSession和Mapper动态代理对象的获取步骤。通过查阅此图可以对Mybatis的SQL解析流程有一个清晰的认识。

    对智能制造的认识(1).doc

    从系统活动角度,神经网络技术在系统控制中已开始应用,同时应用分布技术和 多元代理技术、全能技术,并采用开放式系统结构,使系统活动并行,解决系统集成。由 此可见,IMS理念建立在自组织、分布自治和社会生态学...

    决战Nginx: 系统卷 - 高性能Web服务器详解与运维

     本书第一部分首先讲述了Nginx服务器的功能、模块管理和进程管理,然后讲述Nginx如何处理请求,在这个基础之上再认识Nginx提供的服务器的名字,Nginx服务器最大的焦点在于高并发和反向代理,在不多却足够使用的模块...

    决战Nginx系统卷——高性能Web服务器详解与运维

     本书第一部分首先讲述了Nginx服务器的功能、模块管理和进程管理,然后讲述Nginx如何处理请求,在这个基础之上再认识Nginx提供的服务器的名字,Nginx服务器最大的焦点在于高并发和反向代理,在不多却足够使用的模块...

    决战Nginx: 系统卷 - 高性能Web服务器详解与运维.part2

     本书第一部分首先讲述了Nginx服务器的功能、模块管理和进程管理,然后讲述Nginx如何处理请求,在这个基础之上再认识Nginx提供的服务器的名字,Nginx服务器最大的焦点在于高并发和反向代理,在不多却足够使用的模块...

    决战Nginx系统卷——高性能Web服务器详解与运维1

     本书第一部分首先讲述了Nginx服务器的功能、模块管理和进程管理,然后讲述Nginx如何处理请求,在这个基础之上再认识Nginx提供的服务器的名字,Nginx服务器最大的焦点在于高并发和反向代理,在不多却足够使用的模块...

    决战Nginx系统卷——高性能Web服务器详解与运维2

     本书第一部分首先讲述了Nginx服务器的功能、模块管理和进程管理,然后讲述Nginx如何处理请求,在这个基础之上再认识Nginx提供的服务器的名字,Nginx服务器最大的焦点在于高并发和反向代理,在不多却足够使用的模块...

    决战Nginx_系统卷

    高性能Web服务器详解与运维》第一部分首先讲述了Nginx服务器的功能、模块管理和进程管理,然后讲述Nginx如何处理请求,在这个基础之上再认识Nginx提供的服务器的名字,Nginx服务器最大的焦点在于高并发和反向代理,...

    决战Nginx: 系统卷 - 高性能Web服务器详解与运维.part1

     本书第一部分首先讲述了Nginx服务器的功能、模块管理和进程管理,然后讲述Nginx如何处理请求,在这个基础之上再认识Nginx提供的服务器的名字,Nginx服务器最大的焦点在于高并发和反向代理,在不多却足够使用的模块...

    决战Nginx: 系统卷 - 高性能Web服务器详解与运维.zip

    高性能Web服务器详解与运维》第一部分首先讲述了Nginx服务器的功能、模块管理和进程管理,然后讲述Nginx如何处理请求,在这个基础之上再认识Nginx提供的服务器的名字,Nginx服务器最大的焦点在于高并发和反向代理,...

    决战Nginx: 系统卷 - 高性能Web服务器详解与运维.z01

    高性能Web服务器详解与运维》第一部分首先讲述了Nginx服务器的功能、模块管理和进程管理,然后讲述Nginx如何处理请求,在这个基础之上再认识Nginx提供的服务器的名字,Nginx服务器最大的焦点在于高并发和反向代理,...

    Head First Design Pattern(en) pdf(part3)

     动态地设置行为  封装行为的大局观  “有一个”比“是一个”更好  策略模式  共享模式词汇的威力  我如何使用设计模式?  设计箱内的工具  习题解答 2 让你的对象知悉现况  气象观测站  认识观察者模式 ...

    Head First Design Pattern(en) pdf(part1)

     动态地设置行为  封装行为的大局观  “有一个”比“是一个”更好  策略模式  共享模式词汇的威力  我如何使用设计模式?  设计箱内的工具  习题解答 2 让你的对象知悉现况  气象观测站  认识观察者模式 ...

Global site tag (gtag.js) - Google Analytics