2.3. 面向切面编程(AOP)

Spring Framework

2.3. 面向切面编程(AOP)

Spring 2.0在AOP上有很大的改进。Spring AOP框架本身就十分易于用XML配置,不再那么繁琐;Spring 2.0集成了AspectJ 切入点(pointcut)语言和 @AspectJ 切面(aspect)声明类型。 标题为 第 6 章 使用Spring进行面向切面编程(AOP) 的部分专门描述这个新支持。

2.3.1. 更加简单的AOP XML配置

Spring 2.0引入了新的模式,支持定义从常规Java对象中发展中来的切面。 此支持充分利用了AspectJ切入点语言,提供了完整类型的通知(advice)(也就是没有多余转换和 Object[] 参数操作)。 标题为 第 6.3 节 “基于Schema的AOP支持” 的部分详细描述了该支持的细节。

2.3.2. 对@AspectJ 切面的支持

Spring 2.0同样支持使用@AspectJ注解定义的切面。这些切面可以在AspectJ与Spring AOP中共享,仅仅需要(老实说!)一些简单的配置。 在标题为 第 6.2 节 “@AspectJ支持” 的部分讨论了对@AspectJ切面的支持。

2.3.3. 对bean命名pointcut( bean name pointcut element)的支持

Spring 2.5 加入了对bean(...)pointcut 元素的支持,在 spring定义的bean命名中对指定的命名进行匹配。细节请参阅 第 6.2.3.1 节 “切入点指示符(PCD)的支持”

2.3.4. 对AspectJ装载时织入(AspectJ load-time weaving)的支持

Spring 2.5支持对AspectJ装载时织入的显式支持,作为基于proxy的AOP框架的补充。新的context:load-time-weaver配置元素自动激活定义在AspectJ的META-INF/aop.xml配置文件中的AspectJ方面,通过在底层ClassLoader中注册的一个转换器,把它们应用于当前应用程序上下文中。注意这仅在支持类转换器(class transformation)的环境中才能运作。 参阅第 6.8.4 节 “在Spring应用中使用AspectJ加载时织入(LTW)”,有对其能力和限制的描述。