题目
AspectJ 是一个基于 Java 语言的 AOP 框架,从 Spring2.0 开始, Spring AOP 引入了对 AspectJ 的支持, AspectJ 扩展了 Java 语言,提供了一个专门的编译器,在编译时提供横向代码的织入。A. 正确B. 错误
AspectJ 是一个基于 Java 语言的 AOP 框架,从 Spring2.0 开始, Spring AOP 引入了对 AspectJ 的支持, AspectJ 扩展了 Java 语言,提供了一个专门的编译器,在编译时提供横向代码的织入。
A. 正确
B. 错误
题目解答
答案
A. 正确
解析
本题考查对AspectJ框架与Spring AOP关系的理解,以及AspectJ的核心特性。关键点在于:
- AspectJ是否为Java语言的AOP框架;
- Spring AOP何时开始支持AspectJ;
- AspectJ是否通过编译器在编译时实现代码织入。
1. AspectJ的定位与功能
- AspectJ是专门的AOP框架,由Eclipse基金会维护,专注于面向切面编程,提供声明式管理横切关注点的能力。
- 扩展Java语言:AspectJ通过添加切面(aspect)、切点(pointcut)等关键字,增强了Java语言的语法,支持更灵活的代码织入。
2. Spring AOP与AspectJ的集成
- Spring 2.0版本开始,Spring框架引入对AspectJ的支持,允许开发者使用AspectJ的注解(如
@Aspect)或XML配置定义切面。 - 整合优势:结合Spring的IoC容器,AspectJ的切面能与Spring组件无缝协作,简化AOP配置。
3. AspectJ的编译器与代码织入
- 编译时织入:AspectJ提供专门的编译器(
ajc),在编译阶段将切面逻辑织入目标类,生成增强后的字节码。 - 织入时机:与Spring动态代理(运行时织入)不同,AspectJ的静态织入更高效,且支持更复杂的切面场景。