JBoss AOP

AOP 详解

我的未来我决定 提交于 2020-03-11 12:56:59
看了半天,才搞懂 spring AOP 的原理。之前一直都给别人 说不清楚。现在,说一遍,加深印象。 AOP 的原理: 涉及到了 设计模式的 代理模式。 代理模式的实现呢,我们可以分为 静态代理 和 动态代理。 静态代理,主要是 一个接口,一个接口实现类 和 实现该接口的 代理类。 这些类都是在编译时 就确定好了,所以叫做静态代理,缺点 在于 每次都要写 一个实现接口的 代理类。 因此 出现了 动态代理。 动态代理 有 很多种框架。AspectJ、JBoss Aop、Spring Aop. 我们主要讨论 spring Aop。 AOP 实现有 JDK动态代理 和 Cglib 动态代理。spring AOP 这两种都是支持的。 单纯不使用spring AOP 去实现 JDK 动态代理,那么就需要 存在一个被代理的接口 和 被代理接口的实现类, 再创建一个实现 InvocationHandler 接口的类,在 invoke 方法中定义 代理类需要做的行为。 通过调用 Proxy.newProxyInstance 就可以为 被代理接口 动态生成一个 class 代理类。之后 只要调用方法的时候,只使用 代理类去调用,不使用 实现类。就能完成动态代理。 JDK 动态代理 生成的类 实现了 被代理接口,继承了 Proxy。由于java 只支持单继承,因此在 继承Proxy 之后,只能选择