java补充知识点(2)

1 代理

1.1 什么是代理

代理模式是常用的java设计模式

代理类 主要负责为委托类(被代理对象)预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。

代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。

代理类在执行被代理类的功能方法前后,加入一些业务逻辑:权限的验证,事务的处理,日志的记录
java补充知识点(2)

1.2 代理的分类

{一般代理对象和被代理对象都会实现同一个接口,特别是静态代理}
按照代理对象的创建时期,代理类可以分为两种。

1.2.1 静态代理

静态代理:由程序员创建或特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了。

1.2.2 动态代理

动态代理:在程序运行时,运用反射机制动态创建而成。

1 动态代理的实现方法
  1. 如果被代理类实现了接口,可以使用jdk提供的Proxy,InvocationHandler实现
  2. 如果被代理类没有实现接口,可以使用cglib,通过继承来实现动态代理,使用的时候必须导入cglib的包。
2 动态代理的实际使用

Struts2中的拦截器
Spring中的aop
Hibernate中的代理