spring 提供四种各具特色的 AOP 支持:
①基于代理的经典 AOP(利用 ProxyFactoryBean 进行 XML 配置,这种做法 spring2.0 以前常用配置)
②Schema-based 的 AOP(利用<aop:config>)
③@ASpectJ 注解驱动的 AOP
④注入式 AspectJ 的 AOP(其实与 Spring 并无多大的关系,这个就是使用 AspectJ 这个框架实现 Aop 编程)
下面我们对前三种类型分别进行介绍。
基于代理的经典 AOP
这种方式是使用 ProxyFactoryBean 来创建的,下面对几个主要的类进行概要说明:
按方法名字匹配:org.springframework.aop.support.NameMatchMethodPointcut 成员变量:mappedNames 匹配方法名集合
前置通知:org.springframework.aop.MethodBeforeAdvice
后置通知:org.springframework.aop.AfterReturningAdvice
环绕通知:org.aopalliance.intercept.MethodInterceptor (这个依赖于 aopalliance-1.0.jar 这个包)
异常通知:org.springframework.aop.ThrowsAdvice
ProxyFactoryBean 使用时有以下几方面需要注意:
被代理的类没有实现任何接口,使用 CGlib 代理,否则使用 JDK 代理。