Spring对AOP的支持
Spring中AOP代理由Spring的IOC容器负责生成、管理,其依赖关系也由IOC容器负责管理,故AOP代理可以直接使用容器中的其它bean实例作为目标,这种关系可由IOC容器的依赖注入提供。
Spring创建代理的规则为:
1、默认使用Java动态代理来创建AOP代理,这样就可以为任何接口实例创建代理了
2、当需要代理的类不是代理接口的时候,Spring会切换为使用CGLIB代理,也可强制使用CGLIB
AOP编程时,我们只需要参与到三个部分:
1、定义普通业务组件
2、定义切入点,一个切入点可能横切多个业务组件
3、定义增强处理,增强处理就是在AOP框架为普通业务组件织入的处理动作
即:代理对象的方法=增强处理+被代理对象
Spring AOP支持以下AspectJ切入点指示符(PCD)用于切入点表达式:
- execution:用于匹配方法执行连接点。这是使用Spring AOP时使用的主要切入点指示符。
-
within:限制匹配某些类型中的连接点(使用Spring AOP时在匹配类型中声明的方法的执行)。
-
this:限制与连接点的匹配(使用Spring AOP时执行方法),其中bean引用(Spring AOP代理)是给定类型的实例。