Spring02——实现动态代理拦截器

实现动态代理的2种方式

第一种:  用JDK提供的Proxy代理类InvocationHandler调用处理类  配合起来可以拦截一个接口下面的实现类,拦截它的方法,这样可以在它之前做点事情之后做点事情都可以。不过使用JDK这种方式必须实现接口才可以。优势:使用反射创建对象,创建效率高。

面向接口编程    spring里默认用jdk方式。为啥?都有接口,面向接口编程的。下面来实现一个小练习实践理解

①自定义一个接口

②写一个接口实现类

③写一个拦截

④主函数调用

第二种: 用cglib第三方库,它是用asm   这是搞class字节码的,这种方式基于子类的,基于继承,如果类没有接口就可以用这种方式。优势:执行效率高

①创建一个练习类

②创建一个代理类

③主函数调用

运行效果:

上面例子举得不是很好,一般在拦截到类和方法后可以干点拦截前拦截后的事情,再举个例子,比如io流操作拦截到后要close掉,可有时为了效率好则希望把它放入连接池里,下次需要再调用,但是一close掉就销毁了,所以可以在拦截到后再拦截前就把它放入连接池,这次就算close掉也已经放入连接池里下次可以直接拿来用了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,234评论 19 139
  • 泉州半月雨,久不见太阳,人也忧愁! 心那蛮,摇摆不定。事无解!事无解! 去也难,留也难,连日雨绵绵! 风摧城,雷声...
    李衎阅读 159评论 0 0
  • 我把沙漏放在办公桌上,盯着时间跑,然而还是没有察觉,2016年已过去大半,这真是一件悲伤的事情。 想起了那则故事:...
    蕊蕊啊阅读 276评论 0 1
  • 俗人一个 不喜雅致 一生放肆 ...
    城南花酒阅读 159评论 0 0