Java框架之Spring02-AOP-动态代理-AspectJ-JdbcTemplate-事务
AOP 动态代理 代理设计模式的原理: 使用一个代理将原本对象包装起来 ,然后用该代理对象”取代”原始对象。任何对原始对象的调用都要通过代理。代理对象决定是否以及何时将方法调用转到原始对象上。 代理模式的三要素: 代理主题接口 代理者 被代理者 代理模式的主要优点 代理模式在客户端与目标对象之间起到一个中介作用和保护目标对象的作用; 代理对象可以扩展目标对象的功能; 代理模式能将客户端与目标对象分离,在一定程度上降低了系统的耦合度; 其主要缺点 在客户端和目标对象之间增加一个代理对象,会造成请求处理速度变慢; 增加了系统的复杂度; 动态代理的方式 静态代理类只能替一个主题接口进行代理工作 基于接口实现动态代理: JDK动态代理 基于继承实现动态代理: Cglib、Javassist动态代理 JDK动态代理步骤: * 1、编写主题接口 * 2、编写被代理类 * 3、编写代理工作处理器:即代理类要替被代理类做什么事情(有参构造器) * 要求:必须实现InvocationHandler,重写 * Object invoke(Object proxy, Method method, Object[] args) * 第一个参数:代理类对象 * 第二个参数:被代理类和代理类 要执行的方法 * 第三个参数:要执行方法的实参列表 * 这个invoke方法不是程序员调用