java补充知识点(2)
1 代理
1.1 什么是代理
代理模式是常用的java设计模式。
代理类 主要负责为委托类(被代理对象)预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。
代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。
代理类在执行被代理类的功能方法前后,加入一些业务逻辑:权限的验证,事务的处理,日志的记录
1.2 代理的分类
{一般代理对象和被代理对象都会实现同一个接口,特别是静态代理}
按照代理对象的创建时期,代理类可以分为两种。
1.2.1 静态代理
静态代理:由程序员创建或特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了。
1.2.2 动态代理
动态代理:在程序运行时,运用反射机制动态创建而成。
1 动态代理的实现方法
- 如果被代理类实现了接口,可以使用jdk提供的Proxy,InvocationHandler实现
- 如果被代理类没有实现接口,可以使用cglib,通过继承来实现动态代理,使用的时候必须导入cglib的包。
2 动态代理的实际使用
Struts2中的拦截器
Spring中的aop
Hibernate中的代理