JDK动态代理和cglib动态代理
一晃眼,国庆节已经过去了,时间到了10月中旬了,总是感觉时间不够用,想多看点书,多写点代码,在点滴中积淀属于自己的知识系统。 闲言少叙,先来说一下什么是代理模式,我们去一个新的地方总是要先找地方住,但是我们人生地不熟的掌握的资源不多,这时候一般会找中介,中介对房源很熟悉,很快就能为你找到合适的房子,这时候,中介就是一个代理,你就相当于是一个委托方。 下面是设计模式中的代理: 代理模式代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。 按照代理的创建时期,代理类可以分为两种: 静态代理由程序员创建或特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了。 动态代理在程序运行时,运用反射机制动态创建而成。 动态代理类的字节码在程序运行时由Java反射机制动态生成,无需程序员手工编写它的源代码。动态代理类不仅简化了编程工作,而且提高了软件系统的可扩展性,因为Java 反射机制可以生成任意类型的动态代理类。java.lang.reflect 包中的Proxy类和InvocationHandler 接口提供了生成动态代理类的能力。 动态代理有很多种,先看第一种,JDK动态代理